我试图用这个简单的代码导入带有php类FPDI的pdf:
require_once("fpdf/fpdf.php");
require_once("fpdi/fpdi.php");
$pdf = new FPDI();
$pdf->setSourceFile('intermedia.pdf');
$tplidx = $pdf->ImportPage(1);
$pdf->AddPage();
$pdf->useTemplate($tplidx,0,0,210);
$pdf->Output();
但是我收到以下错误:
警告:explode()[function.explode]:空分隔符。在 第369行/var/catalogo/test_pdf/fpdi/pdf_parser.php
致命错误:未捕获的异常'异常'有消息'无法 在预期的位置找到对象(1,0)。'在 /var/catalogo/test_pdf/fpdi/pdf_parser.php:709堆栈跟踪:#0 /var/catalogo/test_pdf/fpdi/pdf_parser.php(268): pdf_parser-> resolveObject(Array)#1 /var/catalogo/test_pdf/fpdi/pdf_parser.php(208): pdf_parser-> _readRoot()#2 /var/catalogo/test_pdf/fpdi/fpdi_pdf_parser.php(71): pdf_parser-> __ construct(' / var / catalogo / t ...')#3 /var/catalogo/test_pdf/fpdi/fpdi.php(128): fpdi_pdf_parser-> __ construct(' / var / catalogo / t ...')#4 /var/catalogo/test_pdf/fpdi/fpdi.php(108): FPDI-> _getPdfParser(' / var / catalogo / t ...')#5 /var/catalogo/test_pdf/index.php(5): FPDI-> setSourceFile(' intermedia.pdf')#6 {main}抛出 第709行/var/catalogo/test_pdf/fpdi/pdf_parser.php
这是应该导入的文件: http://catalogo.selectaspa.it/test_pdf/intermedia.pdf
答案 0 :(得分:0)
好的,这个文件的交叉引用完全被破坏了。我刚刚在爆炸时捕获了“警告”,但最后你将不得不重新保存文件,例如Acrobat在将其传递给FPDI之前进行修复。
您可以将第362行附近的pdf_parser.php更改为:
// get Line-Ending
$found = preg_match_all("/(\r\n|\n|\r)/", substr($data, 0, 100), $m); // check the first 100 bytes for line breaks
if ($found === 0) {
throw new Exception('Xref table seems to be corrupted.');
}
可以在单独的FPDI PDF-Parser中使用相同的修复程序,这样您也可以阅读此文档。