2012-12-30 69 views
11

我在多維數組及其值中遇到了一些麻煩。如何使用dompdf創建多個頁面

我在找的是從我的查詢中我搜索數組中的教師姓名。之後我想用dompdf創建一個pdf。問題在於循環。我無法創建一個合適的循環,這將以我希望的方式工作。我的樣本查詢

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

現在我知道,這個代碼是混亂的,但我要的是,它應該在一個單一的PDF文件中的每個教師建立DOMPDF。就像從查詢中獲取教師一樣,每個教師都應該創建一個dompdf頁面。目前它只根據我的查詢所搜索的最後一個值創建一個頁面。

請幫忙。這有點緊急。

+2

我建議不要使用mysql_ *功能進行數據庫訪問。它們很舊,支持得不好,並且在所有名稱中都被棄用了(並且從PHP 5.5開始會被棄用)。我建議改用更現代的系統,比如mysqli或PDO。 – GordonM

+0

聽起來像這是不是多維數組或循環的問題,但具有適當的'$ dompdf'用法。 –

回答

23

你的循環工作正常。您將頁面添加到PDF的方式可能是錯誤的。顯然你會一遍又一遍覆蓋一個頁面,而不是附加一個新頁面。

編輯

我從來沒有使用DOMPDF。快速查看文檔讓我認爲您可以創建類似HTML標記的內容,然後將其轉換爲PDF格式,我是否可以正確使用它?

示例代碼

$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"); 

如果你想知道的不尋常的語法$var = <<<HTML \r\nHTML,這是一個heredoc。當你有很多外來內聯代碼時,使用heredocs會更加舒適,它可以有變量{$varname},你不需要擔心引號。所有你需要確定的是,heredoc更接近HTML是在一個新的行,而不是縮進。

EDIT2

仍然不太清楚,你所使用的庫。我發現this extension看起來不錯,它被稱爲dompdf,就像你在你的問題中所說的那樣。

您的最新評論表明您迄今尚未解決您的問題,因此我決定添加更多信息以幫助您達到目標。

免責聲明:我不打算寫功能代碼,我將對此進行測試,但下面的提示將你推到正確的方向,讓您的東西做。

dompdf能夠讀取輸入文檔的CSS2和CSS3屬性。

上面的while循環中的每個循環代表一個教師,他們每個人都在輸出文檔中獲取自己的頁面。

我把頁面放入類容器teacherPage的div容器中。你可以在這個容器中填入你想要顯示給老師的所有信息。

現在我們所需要做的就是告訴dompdf每個teacherPage是一個新頁面。這可以使用@page markup shipped with CSS3

我在上面的示例文檔中添加了一個空的css容器<style type="text/css"></style>,這就是頁面樣式應該去的地方。

的例子CSS

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

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

隨着@page您可以定義一個名爲頁teacher,它可以有適用於整個頁面容器的屬性。

page-break-after: always將每個容器後,開始了新的一頁

希望這有助於,有有趣的嘗試:)

+0

我想這是正確的,但我怎樣才能阻止它覆蓋,並進入下一頁? –

+0

無論您使用的是什麼pdf庫,都應該在手冊中進行說明。 –

+0

爲你添加了一個css例子,希望這有助於 –

10

顯然沒有溢出的問題,其結果要比紙張的允許保證金採取更多的,你可以做的是從另一個表中分離父母的數據,並把它們放在它們之間:

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