dompdf

2012-12-30 20 views
11

ben çok boyutlu dizi ve bunun değeri ile bazı sorun yaşıyorum ile birkaç sayfa nasıl oluşturulur.dompdf

i benim sorgudan ben dizideki öğretmenler adını arıyorum edilir Aradıklarım. Ve bundan sonra dompdf kullanarak bir pdf oluşturmak istiyorum. Sorun döngü ile. Çalışmasını istediğim şekilde çalışacak uygun bir döngü oluşturamıyorum. Benim örnek sorgu bu kod kafa karıştırıcı,

$q11 = "select id from teachers order by teacher "; 
    $r11 = mysql_query($q11) or die(mysql_error()); 
    while($rows11 = mysql_fetch_array($r11)){ 
     $teacher = $rows11['id']; 
     $dompdf->"It will start working"; 
    } 

Şimdi biliyorum, ama ne ben istiyorum o tek pdf dosyasındaki her öğretmen için DOMPDF oluşturmalıdır vardır. Sorguda olduğu gibi öğretmenleri de almalı ve her öğretmen için bir dompdf sayfası oluşturmalıdır. Şu anda, sorgemin aradığı son değere göre yalnızca bir sayfa yapıyor.

Lütfen

Yardım edin. Bu çok acil.

+2

Veritabanı erişimi için mysql_ * işlevlerini kullanmamanızı tavsiye ederim. Onlar eski, kötü bir şekilde desteklenen ve tüm isimlerden istisna edildi (ve PHP 5.5'ten itibaren kullanımdan kaldırılacak). Bunun yerine mysqli veya PDO gibi daha modern bir sisteme geçmenizi öneririm. o çok boyutlu dizi veya döngü ile ancak uygun '$ dompdf' kullanımı ile bir sorun değildir gibi – GordonM

+0

geliyor. –

cevap

23

Kişisel döngü iyi çalışıyor. PDF’nize sayfa eklemenin yolu muhtemelen yanlıştır. Görünüşe göre yeni bir tane eklemek yerine tekrar tekrar bir sayfanın üzerine yazıyorsunuz.

DÜZENLEME

ben DOMPDF hiç kullanmadım. Dokümanlara hızlı bir şekilde baktığımda, HTML biçimlendirmesi gibi bir şey oluşturduğunuzu düşünmeme izin verin. Olağandışı sözdizimi $var = <<<HTML \r\nHTML merak ederse

Örnek kod

$html = <<<HTML 
    <html> 
     <head> 
      <style type="text/css"> 
       /* Your document styling goes here */ 
      </style> 
     </head> 
     <body> 
HTML; 

while ($row = $dbResult->fetch_assoc()) { 
    $html .= '<div class="teacherPage">' 
       . $row['name'] // your teacher document goes here 
      '</div>'; 
} 

$html .= '</body></html>'; 

$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->render(); 
$dompdf->stream("sample.pdf"); 

, bu heredoc bu. Çok fazla yabancı satır içi kodunuz olduğunda heredogları kullanmanız daha rahattır, bu {$varname} değişkenlerine sahip olabilir ve alıntılar hakkında endişelenmenize gerek yoktur. Emin olmanız gereken tek şey, heredoc HTML'un yeni bir satırda olması ve girintisiz olmasıdır.

kullandığınız kütüphane Hala çok emin değilim

EDIT2. Ben this extension'u oldukça iyi görüyorum ve bu sizin sorunuzda söylediğiniz gibi dompdf olarak adlandırılır.

Sizin son açıklama şimdiye kadar sorunu çözmek vermedi gösterir, bu yüzden hedefe almak için biraz daha bilgi eklenmesine karar verdi.

Yasal Uyarı: İşlevsel kod yazmak gitmiyorum ve ben bu test etmeyecektir, ancak aşağıdaki ipuçları eşyalarını halletmek için doğru yönde içine itecek.

dompdf, giriş belgenizin CSS2 ve CSS3 özelliklerini okuyabilmektedir.

while döngü içinde her döngü yukarıdaki bunların her çıkış belgesinde bir kendi sayfasını almak çok odalı bir öğretmen temsil eder.

Ben sınıfa teacherPage bir div kabın içine sayfayı koydu. Bu kapsayıcıyı, öğretmen için gösterilmesini istediğiniz tüm bilgilerle doldurabilirsiniz.

Şimdi tüm yapmanız gereken, her teacherPage yeni sayfası DOMPDF anlatmaktır. Bu benim sayfa stil gitmelidir orası, yukarıdaki örnek belgeye boş css kabı <style type="text/css"></style> eklendi

shipped with CSS3@page biçimlendirmesi kullanarak yapılabilir.

örnek CSS @page ile

@page teacher { 
    size: A4 portrait; 
    margin: 2cm; 
} 

.teacherPage { 
    page: teacher; 
    page-break-after: always; 
} 

Eğer tam sayfa konteyner için geçerli özelliklere sahip bir adlandırılmış sayfa teacher, tanımlayabilirsiniz. yapabilirsiniz,

page-break-after: always :)

+0

Thats hakkını tahmin ediyorum, ama nasıl bunu üzerine yazarak ve sonraki sayfaya gitmek durdurabilirim? –

+0

Bu, kullanmakta olduğunuz her türlü pdf kütüphanesi için kılavuzda açıklanmalıdır. –

+0

sizin için bir css örnek eklenen bu –

10

Görünüşte hiçbir taşma sorunları çalışırken sahip, her bir kap sonra eğlenceli bu yardımcı olur

Umut yeni bir sayfa başlayacak ve sonuçları tabakanın izin marjı daha alıyor Başka bir tablodaki verinin birbirinden ayrılması ve bunların arasına konulması:

<div style="page-break-before: always;"></div>