在php中生成pdf文件

时间:2017-08-21 17:47:24

标签: php arrays pdf

我想创建一个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?

0 个答案:

没有答案