2011-01-05 13 views
26

Pracuję nad przyjaznym drukowaniem css dla strony internetowej. Przegląda/drukuje idealnie w IE, ale Firefox (wersja 3.6) wyświetla tylko podgląd/drukuje pierwszą stronę.Tylko drukarka Firefox 1. strona

Czy ktoś jest świadomy wszystkiego, co by na ogół to spowodowało? Znaczniki są dość skomplikowane, więc nie jestem pewien, od czego zacząć!

Dzięki.

Edit

Rozwiązanie to tylko pogarszał sprawę.

https://support.mozilla.com/ga-IE/questions/667285#answer-115916

Wygląda drukowanie tylko zasysa FF. Klient nie będzie chciał tego usłyszeć - mam nadzieję, że nie skorzystają z FF!

+0

Pozycjonowanie bezwzględne czasami przerywa paginację. –

+0

@Pekka - bezwzględne pozycjonowanie dowolnych elementów (nawet ukrytych) lub tylko treści do wydrukowania? – ScottE

+0

treść do wydrukowania. 'position: absolute' pobiera elementy poza układ układu, myślę, że właśnie dlatego OP twojego połączonego pytania ma problemy. Wersja demonstracyjna na żywo pomogłaby –

Odpowiedz

3

long-standing bug with printing absolutely-positioned elements została ustalona w Firefoksie 3.

na problemy z brakującymi stronami są śledzone w bug 521204 (patrzeć przez „zależy od” listy). Czy masz ramki lub długie tabele na stronie, którą próbujesz wydrukować?

I tak, drukowanie w Firefoksie jest pod wtórny, przykro, że mają do czynienia z nim ...

+0

Nie, brak ramek lub długich tabel. Po prostu stare treści! – ScottE

+0

@ScottE: Przepraszam, nie wiem wtedy. Gdybym musiał to rozgryźć, zmniejszyłbym stronę do najmniejszej możliwej wersji testowej, aby dowiedzieć się, co powoduje problem Nickolay

1

Jeśli nie jesteś w stanie przezwyciężyć ograniczenia Firefoksa na druku, można przekonwertować stronę do pliku PDF. Jeśli masz ochotę na taką opcję, bardzo polecam bibliotekę Prince XML. Ma bardzo dobrą obsługę CSS, w tym także nośniki wydruku.

+0

Interesująca opcja. Czy wspomniałem, że jest to witryna z sharepointem? Mogę sobie tylko wyobrazić, co stanie się z wyrzucanym przez nie znacznikiem śmieci. – ScottE

+0

Ugh ... Nie polecałbym tego dla witryny SharePoint, haha. – Jacob

0

Firefox z pewnością NIE ma żadnego znaczenia. Czasami jednak ściśle przestrzega standardów niż inne przeglądarki. W każdym razie, aby przejść do pościgu, miałem ten sam problem, tj. Firefox drukuje (również podgląd) tylko pierwsze 2 strony raportu wielostronicowego, zbudowanego z długiego stołu, wyprodukowanego przez moją stronę internetową. Po pewnym debugowaniu dowiedziałem się, że uwzględniłem większość zawartości raportu wewnątrz elementu span ze stylem {display: inline-block;} między innymi. Tak szybko, jak usunąłem że stronicowanie było idealne ...

+1

Czyż nie? Zachęcam do otwarcia interfejsu ustawień Firefoksa. ;} Tylko się droczę. Kolejna poprawka dla osób z długimi raportami: być może umieściłeś wszystko w div, który płynie w lewo, powiedzmy, o szerokości 1000 pikseli. Może to być spowodowane pojemnikiem ze stołu. Najpierw sprawdź to. –

+0

"Czasami jednak ściśle przestrzega standardów niż inne przeglądarki." - czasami, * to * niestety "* jest do bani". – falsarella

12

Właśnie się dowiedziałem, że od elementu z

display:inline-block; 

tylko pierwsza strona jest drukowana i everthing jeszcze jest ukryte. ustawienie tego na

display:block; 

było rozwiązaniem w moim przypadku.

+1

Dzięki za cynk. Podobny do ciebie, miałem DIV ustawiony na "display: table". Stworzyłem arkusz stylów drukowania, który ustawił go na 'display: block' i problem został rozwiązany! –

6

Miałem ten sam problem. Okazuje się, że tag root miał na nim display: flex. Po zmianie tego na display: block wyświetliła się reszta treści. Zalecam przejście do drzewa DOM i sprawdzenie każdego atrybutu display.

+3

Flex wciąż jest problemem w FF 44.0.2. Zauważyłem także, że moje uniknięcia "page-break-inside" i "page-break-after", które zostały zignorowane przez FF, nagle zadziałały poprawnie, gdy zamienię 'flex' na' block'. –

11

Jeśli nie chcesz, aby przejść przez cały kod, jest to jedyna rzecz, jaką okazało się, że pracuje dla mnie, nie brudząc się cały mój inny CSS:

@media print { 
    body { 
    overflow: visible !important; 
    } 
} 
4

próbowałem kilkanaście poprawek do tego i, w końcu, wszystko co było potrzebne:

@media print { 
    body { 
    display: block; 
    } 
} 
+0

Musiałem również dodać pozycję względem ciała, aby to zadziałało! –

3

miałem ten sam problem, ponieważ height z body jest ustawiony na 100% po i zmodyfikowane do height: auto w moim print.css, to działało.

@media print { 
    body { 
    height: auto; 
    } 
} 
3

Po wielu badań i prób & błędu, znalazłem this article przez siebie listy. Byłem sceptyczny, ponieważ jest tak stary, ale stwierdza, że:

Jeśli element pływający przebiega poza spód drukowanej strony, reszta pływaka skutecznie zniknie, ponieważ nie będzie drukowana na następnej stronie strona.

Ponieważ mam duży pływający pojemnik, pomyślałem, że spróbuję. Tak, zrobiłem mieszankę z innymi odpowiedziami, a ten artykuł i podszedł z tym:

body { 
    overflow: visible !important; 
    overflow-x: visible !important; 
    overflow-y: visible !important; 
} 

/*this is because I use angular and have this particular layout*/ 
body > .fade-ng-cloak { 
    height: 100%; 
    display: block; 
    flex: none; 
    float: none; 
} 
.l-content, 
.l-sidebar { 
    float: none; 
} 

więc zasadniczo:

  1. Ustawienie ciała overflow: visible
  2. elementów ustawienie, które zachowują się jak owijarki do display: block, wyeliminować wszystkie flex style iw razie potrzeby przywrócić wysokość
  3. wyeliminowanie float na długich pojemnikach

Ten mix działał dla mnie! Jestem bardzo szczęśliwy, że pomyślałem, że będę się dzielić :)

0

Miałem ten sam problem i zastąpiłem pozycję z position:relative na position: absolute z height: 100% z góry div na dół.

Powiązane problemy