我想创建一个pdf文件,但我总是收到此错误:
pdf文件已损坏
问题似乎与$spalten
一致,因为如果我再添加一行,我就会收到错误。
例如:
$spalten = array('name', 'matrikelnummer', 'note');
否则这个功能非常好:
$spalten = array('name', 'note');
case 'pruefungsamt':
$spalten = array('name', 'matrikelnummer');
while (list($k, $fach) = each($global_fachrichtungen));
{
if (!is_numeric($k))
{
$studenten = student_alleLesenFilter($dbh, $parameter['klausurid'], "NOT (versuch = 1 AND note > 4) AND NOT (fachrichtung='Schülerstudent')", 'sortname');
if ($studenten)
if (!pdf_erzeugeListe($pdf, $studenten, $spalten, true, $fach['name']))
{
$error = true;
break;
}
}
}
if (!$error)
pdf_send($pdf, 'pruefungsamtliste.pdf');
else
$smarty->assign('meldung', 'Fehler beim erstellen der Prüfungsamtliste');
break;
var_dump($studenten)
传递:
array(127) {
[0]=> array(20) {
["id"]=> int(90)
["matrikelnummer"]=> Fili"
["fachrichtung"]=> string(10) "Informatik"
["punktesumme"]=> string(2)
我不知道错误在哪里。是因为$global_fachrichtungen
是
$global_fachrichtungen = array('Informatik' => array('name' => 'INFO'),
'Mathematik' => array('name' => 'MATH'),
.....
她是函数pdf_erzeugenListe
:
function pdf_erzeugeListe(&$pdf, $studenten, $spalten, $seitenzahlen = false, $ueberschrift = '')
{
$spaltenname = array('name' => 'Name',
'matrikelnummer' => 'Mat.-nr.',
'note' => 'Note',
// 'punkte' => 'Pkte I',
'punktesumme' => 'Punkte',
'versuch' => 'Versuch',
'semester' => 'Sem.',
'nummer' => 'Nr.',
'fachrichtung' => 'Fachrichtung'
);
$pad = 3;
$hoehe = 6;
$a4_hoehe = 297.30;
$a4_breite = 200.22;
$offset_top = 20;
$offset_right = 20;
$pdf->setFont('Arial','B', 10);
$header = array();
$widths = array();
//Breite der Namens-Spalte feststellen:
$maxbreite = $pdf->getStringWidth('Name');
foreach($studenten as $s)
$maxbreite = max($maxbreite, $pdf->getStringWidth($s['vorname'].' '.$s['name']));
while (list($k, $s) = each($spalten))
{
$u = $spaltenname[$s];
// var_dump($u);
// die();
$header[$k] = $u; //array_push($header, $u);
if($s != 'name')
$widths[$k] = $pdf->getStringWidth($u) + $pad; //array_push($widths, $pdf->getStringWidth($u) + $pad);
else
$widths[$k] = $maxbreite + $pad; //array_push($widths, $maxbreite + $pad);
}
$summe = 0;
foreach($widths as $w)
$summe += $w;
if($summe > $a4_breite - 2 * $offset_right)
{
if($summe > $a4_breite)
return false;
else
$offset_right = ($a4_breite - $summe) / 2;
}
$pdf->setMargins($offset_right, $offset_top);
$zeilen_max = floor(($a4_hoehe - 2 * $offset_top) / $hoehe) - 3;
值是否适合pdf?