2009-08-21 13 views

Odpowiedz

40

W pliku print.css ustaw overflow: visible zamiast overflow: auto na div#content. Naprawiono to dla mnie przynajmniej w Firefoksie. Definicja przepełnienia automatycznego to: "Jeśli przepełnienie zostanie obcięte, należy dodać pasek przewijania, aby zobaczyć pozostałą zawartość" - ale paski przewijania nie istnieją na drukowanych stronach.

Zgaduję, że ponieważ zawartość div powinna obejmować wiele stron, przeglądarka uważa, że ​​"wypływasz poza pojemnik i musisz go przyciąć za pomocą paska przewijania". Pojemnik w tym przypadku jest pierwszą stroną, na której pojawia się zawartość.

+3

To nie działa w Chrome, ale działa dobrze dla mnie w IE. –

+0

To samo tutaj Jack Thor. Znalazłeś rozwiązanie? –

+1

Pracowałem dla mnie w chromie. Byłem leniwy i właśnie dodałem '* {overflow: auto! Important; } ' –

0

Czy jesteś już przy użyciu wartości print atrybutu media dla stylów jak

<link rel="stylesheet" href="print.css" media="print" /> 

Można również użyć page-break-before atrybuty dla elementów, które nie chcą się złamać.

+0

tak, stylów wydruku jest zdecydowanie używanego strona jest naprawdę długa lista tabel, ja naprawdę nie chcę podział strony przed każdym – mjr

5

Jeśli którykolwiek z pojemników, które próbujesz wydrukować, jest pływający, zostaną odcięte, tak jak widzisz.

W pliku print.css upewnij się, że wyłączasz wszystkie pływające elementy bez niszczenia układu. To ból, ale obsługa przeglądarki dla drukowania jest w najlepszym wypadku słaba.

+0

nie pływających, dwukrotnie sprawdzane że – mjr

+0

pracował dla mnie w FF ! dzięki bredren – redress

+0

Zdecydowanie rozwiązany mój problem. Stawiam klasę, która "jasne: obie;" gdzie można ją znaleźć tylko w print.css –

2

Właśnie rozwiązałem ten problem w ie7. Było to w projekcie Sharepoint, który miał różne komórki tabeli i/lub divy ustawione na wysokość: 100%. Po wydrukowaniu wydrukowałby długie formularze, pierwsza strona lub 2 były drukowane w zwykły sposób, a następnie puste strony zamiast reszty.

W moim arkuszu stylów drukowania ustawiam te tabele: & divs to height: auto, a teraz drukuje dobrze.

Mam teraz inny problem w IE8. UGH!

0

Rozwiązałem problem, dodając overflow:visible; i nadałem mu nazwę padding-right: 30px;, zastępując szerokość pasków przewijania.

+0

To nie jest takie pomocne. Nie jest jasne, do jakiego elementu dodano te style. – cchamberlain

6

Znalazłem, że ustawienie display: inline na pojemnikach również pomogło. Niektóre z tych wspaniałych odpowiedzi sprawdziły się w pewnych sytuacjach, podczas gdy w innych nie.

<div class="container"> 
    <div class="content-cutting-off-here"> 
     Some long text that gets cut off at the end of the page... 
    </div> 
</div> 

Większość ludzi ustawione pojemniki do wyświetlenia block lub inline-block. Dla mnie było to obcięcie tekstu i obejście go w postaci inline. Powoduje to również, że width i height są nieistotne dla uszkodzonego kontenera div; które uważam za uciążliwe przy drukowaniu.

@media print { 
    .container { 
     display: inline; 
    } 
} 

Here is a great article that helped me with this solution.

1

jeśli overflow:visible; nie działa, spróbuj overflow-y:visible;

(miałem body{overflow-y:scroll;} i body{overflow:visible;} w print.css nie rewrited go ...)

+1

Im przy użyciu @print {}, 'body {overflow: visible;}' zrobił to dla mnie. – JerryA

4

Wiem, że to stare pytanie, ale tutaj jest inny, nowszy sposób, w jaki może się to zdarzyć.

Sprawdź, czy używasz display: flex; na obciętym elemencie. To był problem dla mnie, ustawienie go na block.

Powiązane problemy