只能打开第一个填充了fpdm的pdf文件

时间:2018-02-21 21:29:58

标签: php pdf

这是我的第一个问题,请原谅这是不可理解的。

我在PHP上有一个小工具,可以将考生注册到考试中。最后,我想用FPDM填充PDF格式,并在foreach中填充数据库中的数据。创建的frist文件非常完美。其他是已创建但当我想用Acrobat或Chrome打开时,加载失败。我可以单独填写每组数据,但是当我调用填充函数两次或多次时,第二个文件无法打开。 MS Edge能够打开损坏的文件,但不能正确显示字体。所以FPDM似乎正确地填充了所有形式,但文件以某种方式被破坏了。

我正在寻找解决方案,但不知道问题出在哪里。代码应该是正确的。 有人可以帮忙??

以下是代码:

require_once('libs/fpdm.php');

$statement = $pdo->prepare("SELECT * FROM `examinations` WHERE uid = :uid");
$result = $statement->execute(array('uid' => $_GET['prepareExamination']));
$examinationToPrepare = $statement->fetch();

$statement = $pdo->prepare("SELECT * FROM `examinees` WHERE examination = :examination");
$result = $statement->execute(array('examination' => $_GET['prepareExamination']));
$examinees = $statement->fetchAll();

$i = 1;

function mergePDF($template, $fields, $outfilename) {
    header("Content-type:application/pdf");
    header("Content-Disposition:attachment;filename=" . basename($outfilename) . "");
    $pdf = new FPDM($template);
    $pdf->Load($fields, true);
    $pdf->Merge();
    $pdf->Output($outfilename, "F")
}


foreach ($examinees as $examinee => $data) {
    if ($examinationToPrepare['department'] == 1) {
        $examiner1Name = utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['group' . strval(intval($data['subDepartment']) - 1) . 'FirstExaminer'], 'firstName')) . ' ' . utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['group' . strval(intval($data['subDepartment']) - 1) . 'FirstExaminer'], 'lastName'));
        $examiner1Description = utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['group' . strval(intval($data['subDepartment']) - 1) . 'FirstExaminer'], 'graduation')) . "\n" . utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['group' . strval(intval($data['subDepartment']) - 1) . 'FirstExaminer'], 'function'));
        $examiner2Name = utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['group' . strval(intval($data['subDepartment']) - 1) . 'SecondExaminer'], 'firstName')) . ' ' . utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['group' . strval(intval($data['subDepartment']) - 1) . 'SecondExaminer'], 'lastName'));
        $examiner2Description = utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['group' . strval(intval($data['subDepartment']) - 1) . 'SecondExaminer'], 'graduation')) . "\n" . utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['group' . strval(intval($data['subDepartment']) - 1) . 'SecondExaminer'], 'function'));
    } else {
        $examiner1Name = utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['firstExaminer'], 'firstName')) . utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['firstExaminer'], 'lastName'));
        $examiner1Description = utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['firstExaminer'], 'graduation')) . '\n' . utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['firstExaminer'], 'function'));
        $examiner2Name = utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['secondExaminer'], 'firstName')) . utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['secondExaminer'], 'lastName'));
        $examiner2Description = utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['secondExaminer'], 'graduation')) . '\n' . utf8_encode(findByUid($_SESSION['examiners'], $examinationToPrepare['secondExaminer'], 'function'));            
    }
    $fields = array(
        'name' => utf8_encode($data['firstName']) . ' ' . utf8_encode($data['lastName']),
        'graduierung' => utf8_encode(findByUid($_SESSION['graduations'], $data['graduation'], 'name')) . ' ' . utf8_encode(findByUid($_SESSION['systems'], $data['system'], 'name')),
        'ort' => utf8_encode($examinationToPrepare['location']),
        'registrierung' => utf8_encode($examinationToPrepare['registration']),
        'datum' => utf8_encode($examinationToPrepare['date']),
        'pruefer1' => $examiner1Name,
        'pruefer1-grad' => $examiner1Description,
        'pruefer2' => $examiner2Name,
        'pruefer2-grad' => $examiner2Description
    );

    if (!file_exists('documents/' . utf8_encode($examinationToPrepare['title']))) {
        mkdir('documents/' . utf8_encode($examinationToPrepare['title']), 0777, true);
    }
    if ($examinationToPrepare['department'] == 1 && !file_exists('documents/' . $examinationToPrepare['title'] . '/' . findById($_SESSION['subDepartments'], $data['subDepartment'], 'name'))) {
        mkdir('documents/' . $examinationToPrepare['title'] . '/' . findById($_SESSION['subDepartments'], $data['subDepartment'], 'name'), 0777, true);
    }

    mergePDF('pdf/Urkunde1.pdf', $fields, 'documents/' . $examinationToPrepare['title'] . '/' . ($examinationToPrepare['department'] == 1 ? findById($_SESSION['subDepartments'], $data['subDepartment'], 'name') . '/' : '') . utf8_encode($data['firstName']) . ' ' . utf8_encode($data['lastName']). '.pdf');

    $i++;
}

0 个答案:

没有答案