2012-10-08 9 views
8

Sto lavorando con Codeigniter e ho implementato con successo dompdf per generare file PDF. Ora ho problemi con l'aggiunta di un'intestazione e un piè di pagina nel PDF generato.Aggiunta di intestazioni e piè di pagina con numero di pagina in dompdf

ecco il codice mia dompdf_helper:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 
function pdf_create($html, $filename='', $stream=TRUE) 
{ 
require_once("dompdf/dompdf_config.inc.php"); 

$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->render(); 
    $dompdf->set_paper("A4"); 
if ($stream) { 
    $dompdf->stream($filename.".pdf",1); 
} else { 
    return $dompdf->output(); 
} 
} 
?> 

Ecco il mio controller di chiamare generazione di file PDF:

<?php 

$data['store']=$res; 
$this->load->helper(array('dompdf', 'file')); 
$html = $this->load->view('store/sales_pdf', $data, true); 
$html.= $this->load->view('footer'); 
$filename="salesbill".$id; 
pdf_create($html, $filename); 
$data = pdf_create($html, '', false); 
write_file('name', $data); 
?> 

Io uso questo script per ottenere il numero di pagina, ma stampato solo se seconda pagina è uscito altrimenti non stamperà.

<script type="text/php"> 

    if (isset($pdf)) { 

     $font = Font_Metrics::get_font("helvetica", "bold"); 
     $pdf->page_text(500,10, "Page: {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0)); 

    } 
    </script> 

voglio stampare il nome della società e informazioni di contatto e il numero di conto come intestazione in ogni pagina, quindi in un piè di pagina. Voglio aggiungere un numero di pagina come "1 di 3".

+1

Il primo posto per iniziare quando il debug dompdf è quello di esaminare il documento HTML che stai rendering, piuttosto che il processo che crea il documento. È più facile identificare gli errori relativi a dompdf in questo modo. Quindi, puoi pubblicare un documento di esempio che mostra l'errore? La mia unica domanda sarebbe, hai almeno un body tag attorno al contenuto HTML? In caso contrario, lo script sarà inaccessibile a dompdf a causa di come il documento viene elaborato. – BrianS

risposta

21

Spero che questo ti aiuterà molto a capire come ottenere intestazione e piè di pagina in dompdf. Controllare questo link anche .... Example

<html> 
    <head> 
    <style> 
    @page { margin: 180px 50px; } 
    #header { position: fixed; left: 0px; top: -180px; right: 0px; height: 150px; background-color: orange; text-align: center; } 
    #footer { position: fixed; left: 0px; bottom: -180px; right: 0px; height: 150px; background-color: lightblue; } 
    #footer .page:after { content: counter(page, upper-roman); } 
    </style> 
    <body> 
    <div id="header"> 
    <h1>Widgets Express</h1> 
    </div> 
    <div id="footer"> 
    <p class="page">Page <?php $PAGE_NUM ?></p> 
    </div> 
    <div id="content"> 
    <p>the first page</p> 
    <p style="page-break-before: always;">the second page</p> 
    </div> 
</body> 
</html> 
+1

Sto anche cercando di aggiungere un numero di pagina, ma questo non ha funzionato per me. Ho provato 'Page Di ' E ' 'e' 'e nessuno di essi produce nulla. Ho php abilitato nelle mie opzioni. qualche idea? – danielson317

+0

Lo stesso qui, stesso tentativo ed errori. Non riesco a farlo funzionare. L'unico modo è CSS '' counter (page) ', ma non è possibile ottenere' counter (pages) 'per mostrare qualcosa di diverso da' 0' ... –

11

Ho anche cercato di aggiungere codice PHP in html, ma non ho mai avuto la possibilità di farlo funzionare. qui è il codice inline completo che vi garantisco opere:

require_once("dompdf_config.inc.php"); 
$html ='<html> 
     <body> 
     <p>Hello Hello</p><p style="page-break-after:always;page-break-before:always">Hello Hello 2</p><p>Hello Hello 3</p> 
     </body> 
     </html>'; 

$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 

$dompdf->render(); 

$canvas = $dompdf->get_canvas(); 
$font = Font_Metrics::get_font("helvetica", "bold"); 
$canvas->page_text(72, 18, "Header: {PAGE_NUM} of {PAGE_COUNT}", $font, 6, array(0,0,0)); 

$dompdf->stream("my_pdf.pdf", array("Attachment" => 0)); 
?> 
+1

forse ovvio ma assicurati di impostare la costante DOMPDF_ENABLE_PHP su true. – tomvo

+0

@tomvo - Non è così ovvio! Grazie per il consiglio. – SPRBRN

Problemi correlati