Шаблон FPDI не найден - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь применить водяной знак к существующему PDF-файлу с помощью библиотеки FPDI, которая включена в мой проект с помощью пакета для композитора "setasign \ fpdi-fpdf".Каждый раз, когда я запускаю скрипт, я получаю исключение «Шаблон не найден».Вот код:

    $pdf       = new \setasign\Fpdi\Fpdi();
    $pdf1      = new \setasign\Fpdi\Fpdi();
    $pageCount = $pdf1->setSourceFile($this->getCurrentFile());
    $tpl1      = $pdf1->importPage(1);

    $pdf2 = new \setasign\Fpdi\Fpdi();
    $pdf2->setSourceFile($watermarkPDF);
    $tpl2 = $pdf2->importPage(1);


    for($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
        $tpl1 = $pdf1->importPage($pageNo);

        $size = $pdf1->getTemplateSize($tpl1);
        $pdf->setSourceFile($this->getCurrentFile());
        if ($size['w'] > $size['h']) {
            $pdf->AddPage('L', array($size['w'], $size['h']));
        } else {
            $pdf->AddPage('P', array($size['w'], $size['h']));
        }

        $pdf->useTemplate($tpl1, 0, 0, 0);
        $pdf->useTemplate($tpl2, 0, 0, 0);
    }

Строка, сообщающая мне об этой ошибке: «$ pdf-> useTemplate ($ tpl1, 0, 0, 0);».Как я могу решить эту ошибку?

1 Ответ

0 голосов
/ 29 мая 2018

Вам нужно использовать только один экземпляр FPDI.В настоящее время вы используете 2 экземпляра и пытаетесь использовать импортированную страницу экземпляра A в экземпляре B.

Ваш код должен выглядеть следующим образом:

$pdf = new \setasign\Fpdi\Fpdi();
$pdf->setSourceFile($watermarkPDF);
$watermarkTpl = $pdf->importPage(1);

$pageCount = $pdf->setSourceFile($this->getCurrentFile());

for($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
    $tpl = $pdf->importPage($pageNo);

    $size = $pdf->getTemplateSize($tpl);
    $this->AddPage($size['orientation'], $size);

    $pdf->useTemplate($tpl);
    $pdf->useTemplate($watermarkTpl);
}

$pdf->Output();
...