将PDF与来自编码PDF的PHP结合使用 - 错误:"模板不存在!"

时间:2016-01-22 18:04:34

标签: php pdf pdf-generation tcpdf fpdf

我正在构建一个简单的Web服务,需要将两个PDF连接成一个PDF文件。我可以将带有POST的文本(基本编码64)的两个PDF传递给服务,并且服务需要将组合的PDF作为编码文本吐出,然后客户端将重新编码并生成PDF。

我发现这个问题让我开始了: Can TCPDF / FPDI accept PDF as string?

我找到了一些示例代码和多个库:

这是一个简单的编码PDF单页。(发布数据) http://pastebin.com/zLXmCNJt

这是我的代码:

<?php

require_once($_SERVER['DOCUMENT_ROOT'].'/FPDF/tcpdf/tcpdf.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/FPDF/tcpdf/tcpdi.php');


class ConcatPdf extends TCPDI 
{
    public $files = array();

    public function setFiles($files)
    {
        $this->files = $files;
    }

    public function concat()
    {
        foreach($this->files AS $file) {
            //$pageCount = $this->setSourceFile($file);
            $pageCount = $this->setSourceData($file);//i modified this
            for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
                 $tplIdx = $this->ImportPage($pageNo);
                 $s = $this->getTemplatesize($tplIdx);
                 $this->AddPage($s['w'] > $s['h'] ? 'L' : 'P', array($s['w'], $s['h']));
                 $this->useTemplate($tplIdx); //error here
            }
        }
    }
}


$pdf641 = $_POST['pdf1'];
$pdf642 = $_POST['pdf2'];

$pdf = new ConcatPdf();
$pdf->setFiles(array(base64_decode($pdf641), base64_decode($pdf642) ));
$pdf->concat(); //!!error here!!
echo base64_encode($pdf->Output('concat.pdf', 'S'));

?>

以下是来自服务器的错误日志: http://pastebin.com/q2vzZfft

这里出了什么问题?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

注意:此问题已得到解决via the Github issue tracker for TCPDI;我也在这里回答,以便遇到任何遇到这个问题的人。

根据TCPDI installation instructions,TCPDI目前与最近版本的FPDF捆绑的FPDF_TPL版本不兼容。

尝试使用捆绑版本的FPDF_TPL会导致&#34;模板不存在&#34;错误;使用独立版本(FPDF_TPL 1.2.3)应解决此问题。如果在使用FPDF_TPL 1.2.3时继续收到错误消息,请针对TCPDI或TCPDI_PARSER(视情况而定)记录Github问题,并提供一个示例PDF来触发您的问题。