Style drukowania: jak upewnić się, że obraz nie obejmuje podziału strony


96

Pisząc arkusz stylów drukowania, czy istnieje sposób, aby upewnić się, że obraz jest zawsze tylko na jednej stronie, a nie na wielu stronach. Obrazy są znacznie mniejsze niż strona, ale w zależności od przepływu dokumentów trafiają na dół strony i są dzielone. Poniżej przedstawiono przykład zachowania, które widzę:

Page 1 |                    |
       |  (text text text)  |
       |  (text text text)  |
       |  ________________  |
       | | Top of image   | |
       |____________________|
       ------page break------
        ____________________
Page 2 | | Rest of image  | |
       | |________________| |
       |         …          |

Co bym chciał

Page 1 |                    |
       |  (text text text)  |
       |  (text text text)  |
       |                    |
       |                    |
       |____________________|
       ------page break------
        ____________________
Page 2 |  ________________  |
       | | Full image     | |
       | |                | |
       | |________________| |
       |         …          |

Cały czas narzekałem na pływaki w LaTeX, a tu proszę o taką samą funkcjonalność… Czy da się to zrobić? Niekoniecznie obawiam się, że działa we wszystkich przeglądarkach, ponieważ często jest to jednorazowy dokument, który piszę, aby przekształcić go w plik PDF.


45
Głosuj za świetnym wykorzystaniem diagramów graficznych ASCII :)
NickG

@NickG Wiele się zgadza, naprawdę niesamowity diagram ASCII!

Odpowiedzi:


66

Jedynym sposobem, jaki przychodzi mi do głowy, jest użycie jednej (lub potencjalnie więcej) z następujących reguł CSS:

img {
    page-break-before: auto; /* 'always,' 'avoid,' 'left,' 'inherit,' or 'right' */
    page-break-after: auto; /* 'always,' 'avoid,' 'left,' 'inherit,' or 'right' */
    page-break-inside: avoid; /* or 'auto' */
}

Przypominam sobie w połowie, że te deklaracje odnoszą się tylko do elementów blokowych (więc musiałbyś także zdefiniować display: block;na swoim obrazie lub użyć jakiegoś opakowania do zawijania i zastosować do tego reguły (czy to w akapicie, div, span , lista itp ...).

Oto przydatna dyskusja: „ Jakie są najbardziej przydatne media="print"właściwości CSS kompatybilne z różnymi przeglądarkami?

Bibliografia:


3
Tak, to działa. ( page-break-inside:avoid). Teraz przypomina mi się, dlaczego pływaki LaTeX są uciążliwe.
davidtbernal

2
@notJim tylko pływaki?
Mindwin,

Wyjaśnienie jest bardzo logiczne, ale z jakiegoś powodu nie działa dla mojego pliku HTML5 z przeglądarką Firefox 54. Może to tylko błąd, ponieważ działa z Internet Explorerem 11 ...
Wolf

strona-break-inside - CSS | MDN to strona poświęcona tej wadzie;)
Wolf

@Wolf Czy ta strona się zmieniła? A może coś mi brakuje? Dlaczego to nie działa w HTML5 z FF54?
The Oddler
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.