2011-02-24 54 views
0

我正在創建一個學生管理系統,我希望能夠生成一個PDF報告,該報告將包含每個學生的數據, studentId,Math,English,Science,Class,totals,Rank,myClass和myTotals。例如,在下表中,我希望pdf有6頁。每個只包含特定學生的詳細信息。我如何去做這件事?在新頁面上創建數據庫中的行的pdf

預先感謝您通過行

studentId Math English Science Class totals Rank myClass myTotals 
2   75 83  84  3p1 242  1  3p1  242 
5   88 77  77  3p1 242  1  3p1  242 
1   80 66  85  3p1 231  2  3p1  231 
6   92 97  96  5p2 285  1  5p2  285 
3   70 88  90  5p2 248  2  5p2  248 
4   50 82  50  5p2 182  3  5p2  182 
+0

那麼你想每頁一行? – 2011-02-24 14:29:01

+0

如果您習慣於編寫HTML,則可以嘗試使用其中一種[HTML to PDF轉換器](http://stackoverflow.com/q/3178448/264628)。 – BrianS 2011-02-24 22:38:06

回答

0

循環,每一行創建一個新的頁面。如何做到這一點完全取決於您創建PDF的內容。

0

您可以將信息輸出到LaTeX文件(假設機器已安裝)。我假設你從數據庫中獲取所有你的學生信息到一個名爲students的數組中。如果您使用mySQL或類似的存儲數據,這應該很簡單。

這應該會生成一個report.tex文件,然後執行pdflatex來生成report.pdf文件。

<? 

$f = fopen('report.tex','w'); 
$out = '\documentclass{article} 
\usepackage{a4wide} 
\begin{document} 
'; 
fwrite($f,$out); 
//Example array 
$students = array(array('studentId'=> 1, 'Math'=> 1, 'English'=> 5 , 'Science' => 5, 'Class' =>6, 'totals'=>6 , 'Rank'=>7 , 'myClass' =>7, 'myTotals'=>9)); 
foreach($students as $x){ 
    $out = '\begin{table}[htbp]'."\n".' \centering'."\n"; 
    $out .= '\begin{tabular}{|r|r|r|r|r|r|r|r|r|}'."\n"; 
    $out .= '\hline'."\n"; 
    $out .= 'studentId & Math & English & Science & Class & totals & Rank & myClass & myTotals \\\\ '."\n \\hline \n"; 

    $out .= "{$x['studentId']} & {$x['Math']} & {$x['English']} & {$x['Science']} & {$x['Class']} & {$x['totals']} & {$x['Rank']} & {$x['myClass']} & {$x['myTotals']} "; 
    $out .= '\\\\'."\n \\hline"; 
    $out .= '\end{tabular} '."\n".' \end{table}'."\n".'\newpage' ."\n"; 
    fwrite($f,$out); 

} 
fwrite($f,"\n".'\end{document}'); 
fclose($f); 
echo (exec('pdflatex report.tex')); 
echo "\ndone"; 
?> 

該腳本現在正常工作,生成一個正確的文件。讓服務器發送PDF給你不應該太難。

+0

我已經嘗試使用LaTeX並安裝它,但我一直無法讓腳本運行。如果可能的話,我將不勝感激使用fpdf生成報告的腳本。 – hila 2011-02-25 04:03:27

+0

@hila,我已經修復並測試了腳本。它現在應該使用pdflatex。你可能想添加一些額外的東西來爲你下載生成的PDF。 – 2011-02-25 06:50:20