2011-11-22 6 views
6

Ho interruzioni di pagina che funzionano per i supporti di stampa con un rapido page-break-after: always. Li uso per separare più report in un singolo processo di stampa con batch. Sfortunatamente, quando il lavoro di stampa è a doppia faccia, l'interruzione di pagina può causare l'avvio di un rapporto sulla stampante sul retro del report precedente.Persino l'interruzione di pagina per la stampa fronte/retro in HTML e CSS

C'è un modo per forzare un'interruzione di pagina su una pagina pari? Oppure, in alternativa, per rilevare su quale numero di pagina apparirà un determinato elemento?

risposta

1

Non esiste alcuna funzionalità incorporata in CSS per questo.

Un'idea:
Si potrebbe forse provare avvolgendo ognuno dei tuoi rapporti in un div e poi usando qualcosa come jQuery per capire la height del div di capire se finisce su una pagina dispari.

Se termina su una pagina dispari, quindi iniettare un div vuoto con la classe dopo l'interruzione di pagina dopo di ciò in modo che si alimenti alla pagina successiva.

EDIT
Ovviamente questo sarà veramente solo funziona se si conosce il dpi in cui i tuoi pagina viene stampata sulla stampante di destinazione. Non c'è una risposta magica che funzionerà solo per tutti gli scenari.

  • 72 dpi (web) = 595 x 842 pixel
  • 300 dpi (stampa) = 2480 x 3508 pixel ("210 millimetri X 297 millimetri @ 300 dpi")
  • 600 dpi (stampa) = 4960 X 7016 pixel

Avresti bisogno di sperimentare un po 'qui con le impostazioni della stampante standard per vedere cosa funziona per voi/i vostri clienti. Se ci sono più scenari, puoi lasciarli selezionare da un menu a discesa.

Quindi dovresti usare jquery per controllare l'altezza dei pixel del div, controllarlo contro l'altezza dei pixel della pagina per vedere se il div termina su una pagina pari o dispari - quindi inserire l'interruzione di pagina se il rapporto finisce su una pagina dispari.

Avresti anche bisogno di sapere in anticipo se l'utente userà la stampa fronte-retro, perché avresti solo bisogno di farlo per la stampa fronte-retro.

+0

Idea interessante: esiste un modo per conoscere (o impostare) l'altezza di una pagina? –

+0

@RileyLark, ho modificato la mia risposta, sopra per darti alcune informazioni. – Nils

5

C'è una funzionalità CSS nello standard. Sei sulla strada giusta. Usa:

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

Il problema è, attualmente, l'unico browser principale che supporta questa è Opera. Tuttavia, Opera ha i suoi problemi complessi con la stampa, ma potrebbe funzionare per la tua situazione.

+6

Non hai bisogno di scriverlo come 'style =" page-break-after: right "'? –

Problemi correlati