13

FPDIを使用してFPDFで作成されたPDFに既存のPDF(別の方法で作成された)を追加しようとしています。ほとんどのPDFで検索が機能するようですが、次のエラーが発生します。

FPDF error: Unable to find xref table.

いくつかのテストの結果、1.4以下(Acrobat v5以下)のPDFバージョンを使用すると機能するように見えることがわかりました。ファイルを見ると、PDF形式が異なるためと思われます。

これに対する回避策または解決策はありますか?私はおそらくユーザーによって10000以上のPDFをアップロードしていますが、新しいものもあれば、そうでないものもあります。また、FPDIがなんらかのエラーを引き起こしたり、falseを返したりする代わりに、単に死ぬのも厄介です。

私が今考えることができる唯一の解決策は、PDFファイルの最初の行を解析してバージョンを判別し、機能するバージョンを超えるものだけを追加することです。

編集:

Zend_Pdfでもこれを試しましたが、Zend Frameworkに付属のデモファイルを使用すると、次の結果が得られました。

Fatal error: Uncaught exception 'Zend_Pdf_Exception' with message 'Cross-reference streams are not supported yet.' in /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf/Parser.php:331
Stack trace:
#0 /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf/Parser.php(455): Zend_Pdf_Parser->_loadXRefTable('116')
#1 /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf.php(297): Zend_Pdf_Parser->__construct('/Volumes/Docume...', Object(Zend_Pdf_ElementFactory_Proxy), true)
#2 /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf.php(250): Zend_Pdf->__construct('/Volumes/Docume...', NULL, true)
#3 /Volumes/Documents/temp/ZendFramework-1.7.7/demos/Zend/Pdf/demo.php(37): Zend_Pdf::load('/Volumes/Docume...')
#4 {main}
  thrown in /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf/Parser.php on line 331

1.4より大きいPDFを解析することは不可能ですか?

4

7 に答える 7

19

FPDI を TCPDF で使用できます。これは、(FPDI を使用して) バージョン 1.7 PDF を生成して読み取ります。

TCPDF-PDF の PHP クラス を参照してください。


編集

私は最近、FPDI と TCPDF でさまざまなバージョンと形式の PDF を使用するという問題に挑戦してきました。1.4 より上の PDF バージョンには行き当たりばったりがあることを確認できます。 1.5 と 1.6 ではほぼ 50/50 で動作します。

execコマンドラインから実行できる GhostScript を使用して、実行できないすべての PDF ファイルを v1.4 に変換することで、この問題を回避しました。ps2pdf14GhostScriptlibフォルダから使用します。

于 2009-07-23T23:41:43.310 に答える
6

v1.4 (これまでのところ 1.6 までテスト済みですが、テスト用の 1.7 PFD を見つけたら、1.7 で動作することを確認してください!) 市販のアドオンは必要ありません。基本的なインストールと使用方法については、TCPDI READMEを参照してください。お気軽に試してみて、Github トラッカー経由で問題を報告してください。

于 2013-10-01T02:45:59.507 に答える
4

FPDI PDF-Parserの商用バージョンを使用すると問題が解決することがわかりました。私はそれを1年間使用しており、解析できないPDFはありません(PDFが破損しているか、何か他の奇妙なことが起こっていない限り)。

于 2011-02-13T05:30:20.500 に答える
4

Setasign は、FPDI の商用アドオンとして PDF パーサーを提供しています。新しいパーサーを使用して、バージョン 1.7 までの PDF ファイルを問題なく解析できました。

于 2009-11-27T10:26:39.160 に答える
3

symfony の場合、この lib を使用して >1.4 に変換しました https://packagist.org/packages/xthiago/pdf-version-converter

于 2016-02-19T10:39:30.033 に答える
-1

私のチームはコードの一部を削除しました。コードがPDFに透かしを追加するのを止めました。これで問題は解決しました。PDF> = 1.5

于 2012-04-05T07:54:52.773 に答える