2011-01-05 16 views
26

Sto lavorando su css di stampa amichevole per un sito web. Prevede/stampa perfettamente in IE, ma Firefox (versione 3.6) mostra solo le anteprime/stampa la prima pagina.Solo per la stampa di Firefox 1a pagina

Qualcuno è a conoscenza di qualcosa che generalmente causerebbe questo? Il markup è abbastanza complicato, quindi non sono sicuro da dove cominciare!

Grazie.

Modifica

Questa soluzione solo peggiorato le cose.

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

Sembra stampa succhia solo in FF. Al cliente non piacerebbe sentirlo - speriamo che non usino FF!

+0

Il posizionamento assoluto talvolta interrompe l'impaginazione. –

+0

@Pekka - posizionamento assoluto di tutti gli elementi (anche quelli nascosti) o solo del contenuto da stampare? – ScottE

+0

il contenuto da stampare. 'position: absolute' prende gli elementi dal flusso del layout, penso che sia il motivo per cui l'OP della tua domanda collegata ha problemi. Una demo dal vivo potrebbe aiutare –

risposta

3

Il long-standing bug with printing absolutely-positioned elements è stato fissato in Firefox 3.

I problemi con le pagine mancanti sono tracciati in bug 521204 (guardare attraverso il "dipende" lista). Hai fotogrammi o lunghi tavoli sulla pagina che stai tentando di stampare?

E sì, la stampa in Firefox è sotto di proprietà, mi dispiace hai a che fare con esso ...

+0

No, nessun frame o lunghi tavoli. Semplicemente vecchio contenuto! – ScottE

+0

@ScottE: Mi dispiace, non so allora. Se dovessi capirlo, ridurrei la pagina al più piccolo banco di prova possibile per capire quale sia la causa del problema Nickolay

1

Se non si riesce a superare i limiti di Firefox sulla stampa, è possibile convertire la pagina in un file PDF. Se sei pronto per quell'opzione, Prince XML è una libreria che consiglio vivamente. Ha un ottimo supporto CSS che include i supporti di stampa.

+0

Opzione interessante. Ho già detto che questo è un sito sharepoint? Posso solo immaginare cosa succederebbe al markup dei rifiuti che emette. – ScottE

+0

Ugh ... Non lo consiglierei per un sito Sharepoint, haha. – Jacob

0

Firefox non fa certo schifo. Tuttavia, a volte aderisce più strettamente agli standard rispetto ad altri browser. Ad ogni modo, per andare al sodo, ho avuto lo stesso problema, ad esempio firefox stava stampando (anche in anteprima) solo le prime 2 pagine di un rapporto multipagina, costruito con un lungo tavolo, prodotto da una mia pagina web. Dopo alcuni debug ho scoperto che avevo incluso la maggior parte del contenuto del report all'interno di un elemento span con uno stile {display: inline-block;} tra le altre cose. Non appena ho rimosso che l'impaginazione è stato perfetto ...

+1

Non è così? Ti invito ad aprire l'interfaccia delle impostazioni di Firefox. ;} Solo stuzzicando. Un'altra soluzione per le persone con rapporti lunghi: potresti aver inserito tutto in un div che galleggia a sinistra con, diciamo, una larghezza di 1000 pixel. Potrebbe essere dovuto al contenitore del tavolo. Controlla prima. –

+0

"Tuttavia, a volte si aderisce più strettamente agli standard di altri browser." - a volte, * quello * è quello che "* fa schifo *", sfortunatamente. – falsarella

12

ho appena scoperto, che da un elemento con

display:inline-block; 

solo la prima pagina viene stampata e everthing il resto è nascosto. impostandolo su

display:block; 

era la soluzione nel mio caso.

+1

Grazie per il suggerimento. Simile a te, ho avuto un DIV impostato su 'display: table'. Ho creato un foglio di stile di stampa che lo imposta a 'display: block' e il problema risolto! –

6

Avevo lo stesso problema. Risulta, il tag radice aveva display: flex su di esso. Dopo averlo modificato a display: block, veniva visualizzato il resto del contenuto. Ti consigliamo di risalire il tuo albero DOM e controllare ogni attributo display.

+3

Flex è ancora un problema in FF 44.0.2. Ho anche notato che i miei errori 'page-break-inside' e' page-break-after' che sono stati ignorati da FF improvvisamente hanno funzionato correttamente una volta che ho cambiato 'flex' per' block'. –

11

Se non si vuole passare attraverso tutto il codice, questa è l'unica cosa che ho trovato che funziona per me senza dover mettere tutto il mio altro CSS:

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

ho provato un dozzina di correzioni per questo e, alla fine, tutto quello che dovevo era:

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

Ho anche dovuto aggiungere la posizione relativa al corpo per farlo funzionare! –

3

ho avuto lo stesso problema, perché il height di body è impostato su 100%, dopo che ho modificato per height: auto nel mio print.css, ha funzionato.

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

Dopo un sacco di ricerca e l'errore di prova &, ho trovato this article da un elenco a parte. Ero scettico perché è così vecchio ma si afferma che:

Se un elemento flottato passa davanti alla parte inferiore di una pagina stampata, il resto del galleggiante sparirà, in quanto non verrà stampato sul prossimo pagina.

Come ho un grande contenitore flottato ho pensato di fare un tentativo. Così, ho fatto un mix da altre risposte e questo articolo e arrivato fino a questo:

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; 
} 

Quindi, fondamentalmente:

  1. corpo Impostazione per overflow: visible
  2. elementi di regolazione che si comportano come wrapper per display: block, eliminare tutti gli stili flex e azzerare l'altezza se necessario
  3. Eliminare float su contenitori lunghi

Questo mix ha funzionato per me! Sono così felice che ho pensato di condividere :)

0

Ho avuto lo stesso problema e ho sostituito la posizione da position:relative a position: absolute con height: 100% dal div superiore al fondo.

Problemi correlati