我正在使用setasign V1,因为我们的服务器尚未更新至5.5.9以上,并且正尝试从3个不同的pdf导入第一页以创建新的pdf。但是,如果我使用多个文件,则会出现错误。
我也在使用Slim框架运行此程序,并且不得不向每个setasign文件中添加名称空间,以使其能够读入。
它完美地适用于单个文件,但不适用于试图从多个文件中获取页面的情况。
在下面的代码中,循环遍历每个文件以获取第一页,然后添加一些文本。这是一个函数,在该函数中我传递了一组“作业”以及要保存到的$ savedFile路径。
如果我在循环之前放置“ $ pdf-> setSourceFile($ file)”行,并将$ file定义为$ inputFiles数组中的任何文件,它可以正常工作,但显然只有第一个的第一页文件在创建的3个页面中的每个页面上。如果我仅输入第二个文件或仅输入第三个文件,它也可以工作。但是,如果我将此行放入循环中,则会收到“空响应”错误。 我还尝试在每个循环结束时取消解析器设置,但这没有任何区别。
目前,我无法弄清楚哪里出了问题,因为没有引发任何错误详细信息。
$pdf = new FPDI();
$inputFolder = $_SERVER["DOCUMENT_ROOT"] . '/' . $app->config->get('saveLocations.COC') . '/';
$inputFiles = [];
foreach($jobs as $job){
$coc = $app->coc_approval->getCOC($app, $job);
$cocFile = $coc->file;
array_push($inputFiles, $inputFolder . $cocFile);
}
foreach($inputFiles as $file){
$pdf->setSourceFile($file);
$pdf->AddPage();
$tpl = $pdf->importPage(1);
$pdf->useTemplate($tpl, 0, 0, null, null);
// Set font and color
$pdf->SetFont('Helvetica');
$pdf->SetFontSize('10');
$pdf->SetTextColor(0, 0, 0); // RGB
// Add Customer and PO details
$x = 75.5;
$pdf->SetXY($x,67);
$pdf->Cell(0, 15, $customer);
$pdf->SetXY($x, 73);
$pdf->Cell(0, 15, $PO);
//unset($pdf->parsers[$file]);
}
$pdf->Output($savedFile, 'F');
我希望$ inputFiles数组中列出的每个文件的首页都保存在最终输出pdf中。
非常感谢任何建议!