2012-10-08 17 views
8

Codeigniter ile çalışıyorum ve PDF dosyaları oluşturmak için dompdf'yi başarıyla uygularım. Şimdi oluşturulan PDF'de bir üstbilgi ve altbilgi ekleme konusunda sorunlarım var.Sayfa numarası ile üstbilgi ve altbilgi ekleme dompdf

Ben sayfa numarası almak için bu komut dosyasını kullanmak
<?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); 
?> 

ancak yalnızca ikinci sayfa ise baskılı:

İşte
<?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(); 
} 
} 
?> 

PDF nesil çağırmak benim denetleyicisi: İşte

benim dompdf_helper kodudur Çıkıyor, aksi halde yazdırmıyor.

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

Şirket adı ve iletişim bilgilerini ve fatura numarasını her sayfada üstbilgi ve ardından altbilgi olarak yazdırmak istiyorum. "1/3" gibi bir sayfa numarası eklemek istiyorum.

+1

DOMPDF ayıklama yerine belge oluşturur süreci yerine, render ediyoruz HTML belgesine bakmak olduğunda başlatmak için ilk yer. Bu şekilde dompdf ile ilgili hataları tespit etmek daha kolaydır. Yani, hatayı gösteren örnek bir belge gönderir misiniz? Tek sorum olacak, en azından HTML içeriğinin etrafında vücut etiketleri var mı? Aksi takdirde, belgenin işleyişinden dolayı betik, dompdf'ye erişilemez. – BrianS

cevap

21

Umarım bu, dompdf'de üstbilgi ve altbilginin nasıl elde edileceğini anlamada size yardımcı olur. .... 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

Ayrıca bir sayfa numarası eklemeye çalışıyorum ama bu benim için çalışmadı. 'Sayfa ' I 'Ve' 've' 've hiçbiri hiçbir şey çıkarmıyor. Seçeneklerimde php'yi etkinleştirdim. Düşüncesi olan var mı? – danielson317

+0

Aynı burada, aynı deneme ve hatalar. Işe yaramaz. Tek yol, CSS 'sayacı (sayfa) 'dır, ancak' '' (0) 12 –

11

da bu bağlantıyı kontrol edin ben de html içine PHP kodu eklemek denedi ama o iş yapmak için bir şans var hiç. burada işler garanti tam sıralı kodudur:

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

'dan başka bir şey göstermesi için sayaç (sayfalar) 'ı alamazsınız, ancak sabit DOMPDF_ENABLE_PHP değerini true olarak ayarladığınızdan emin olun. – tomvo

+0

@tomvo - Çok açık değil! Bahşiş için teşekkürler. – SPRBRN

İlgili konular