2011-02-24 41 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