0

我正在尝试使用以下简单代码导入带有 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]:空分隔符。在 /var/catalogo/test_pdf/fpdi/pdf_parser.php 第 369 行

致命错误:未捕获的异常“异常”,消息“无法在预期位置找到对象 (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} 在 /var/catalogo/test_pdf/fpdi/pdf_parser 中抛出。

这是应该导入的文件: http: //catalogo.selectaspa.it/test_pdf/intermedia.pdf

4

1 回答 1

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中使用相同的修复程序,这样您也可以阅读此文档。

于 2014-11-13T07:31:53.700 回答