2011-11-22 14 views
6

Mam przerwy w pracy dla mediów drukowanych z szybkim page-break-after: always. Używam ich do oddzielania wielu raportów w jednym zadaniu drukowania wsadowego. Niestety, gdy zadanie drukowania jest dwustronne, podział strony może spowodować, że drukarka rozpocznie raport z tyłu poprzedniego raportu.Nawet podział strony na dwustronne drukowanie w HTML i CSS

Czy istnieje sposób na wymuszenie podziału strony na równą stronę? Lub alternatywnie, aby wykryć numer strony, na której pojawi się dany element?

Odpowiedz

1

Nie ma wbudowanych funkcji w CSS.

Pomysł:
Można może spróbować zawijania każdego z raportów w div, a następnie przy użyciu coś jak jQuery wypracować height div, aby dowiedzieć się, czy kończy się ona na stronie nieparzystej.

Jeśli kończy się na stronie nieparzystej, należy następnie wprowadzić pusty element div z klasą podziału stron, aby następowała po niej następna strona.

EDIT
Oczywiście to tylko naprawdę działa, jeśli znasz dpi, w którym twoi wydrukowany na drukarce docelowej. Nie ma magicznej odpowiedzi, która zadziała w przypadku wszystkich scenariuszy.

  • 72 dpi (WWW) = 595 x 842 pikseli
  • 300 dpi (drukowanie) = 2480 x 3508 pikseli ("210 mm x 297 mm @ 300 DPI")
  • 600 dpi (druku) = 4960 X 7016 pikseli

Musisz tu trochę poeksperymentować ze standardowymi ustawieniami drukarki, aby zobaczyć, co działa dla Ciebie/Twoich klientów. Jeśli istnieje wiele scenariuszy, możesz pozwolić im wybrać z listy rozwijanej.

Użyjesz jquery do sprawdzenia wysokości piksela elementu div, sprawdź ją na podstawie wysokości w pikselach strony, aby sprawdzić, czy div kończy się na parzystej lub nieparzystej stronie - a następnie wstaw podział strony, jeśli raport się zakończy na nieparzystej stronie.

Należy również wiedzieć z góry, czy użytkownik będzie korzystał z druku dwustronnego - ponieważ wystarczy to zrobić w przypadku drukowania dwustronnego.

+0

Interesujący pomysł - czy istnieje sposób poznania (lub ustawienia) wysokości strony? –

+0

@RileyLark, Edytowałem moją odpowiedź, powyżej, aby podać trochę informacji. – Nils

5

W standardzie jest funkcjonalność CSS. Jesteś na dobrej drodze. Użyj:

<div style="page-break-after: right"> 
-- your content -- 
</div> 

Problem polega na tym, że obecnie jedyną popularną przeglądarką obsługującą tę funkcję jest Opera. Opera ma jednak pewne problemy z drukowaniem, ale może działać w twojej sytuacji.

+6

Nie musisz pisać tak jak "style =" page-break-after: right "'? –