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();

しかし、次のエラーが表示されます。

警告: expand() [function.explode]: 区切り文字が空です。/var/catalogo/test_pdf/fpdi/pdf_parser.php の 369 行目

致命的なエラー: 例外 'Exception' がキャッチされず、'Unable to find object (1, 0) at expected location.' というメッセージが表示されました。in /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

OK、このファイルの相互参照は単純に破損しています。今のところ爆発で「警告」をキャッチしましたが、最後に、ドキュメントを FPDI に渡す前に修復するために、たとえば Acrobat でドキュメントを再保存する必要があります。

pdf_parser.php の 362 行あたりを次のように変更できます。

// 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 に答える