2009-03-18 15 views
13

FPDIを使用して作成されたPDFに既存のPDF(別途作成)を追加しようとしています。ほとんどのPDFファイルを見つける動作しているようですが、私は次のエラーを取得:いくつかのテストの後FPDF/FPDIまたはZend_Pdfが1.4より大きいPDFの解析をサポートする方法はありますか?

FPDF error: Unable to find xref table. 

を、私は私が1.4以下(アクロバットV5以下)のPDF版を使用している場合、それが思われることを考え出しました作業。ファイルを見ると、PDF形式が異なるためです。

回避策はありますか?私はおそらく、ユーザーがアップロードした10,000以上のPDF、新しい作業の一部、それらのいくつかをアップロードしています。 FPDIが何らかのエラーを引き起こすか、偽を返すのではなく、ちょうど失敗することも厄介です。

私が考えることができる唯一の解決策は、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 

それはPDFファイルが大きい解析することは不可能であるが1.4よりも?

答えて

4

私はFPDI PDF-Parserの商業版を使用して私の問題を解決しました。私は1年前からこれを使ってきており、PDFが壊れていないか、何か別のことが起こっていない限り、PDFを解析できませんでした。

+0

このアドオンでどのように作業したか教えてください。私はそれをどのように使用するかについての手がかりがないので。私はそれを使用する方法がわからない、ファイルをインストールしました。私は次のPDFmergerを使用しています。https://github.com/myokyawhtun/PDFMerger/blob/master/PDFMerger.php#L78 –

18

TCPDFでFPDIを使用すると、バージョン1.7のPDFを生成して(FPDIで)読み込みます。

TCPDF - PHP class for PDFを参照してください。


EDIT

1.4がヒットしている上に、私は最近、さまざまなバージョンとFPDIとTCPDFとPDFの形式を使用しての問題に挑戦してきた、と私はそのPDFのバージョンを確認することができ、ミス、興味深いのは、私は1.7のPDFを扱うことがたくさんあり、1.5と1.6で50/50について働いていることです。

GhostScriptを使用して、実行不可能なすべてのPDFファイルをv1.4に変換しました。このファイルは、コマンドラインからexecとすることができます。 GhostScript libフォルダのps2pdf14を使用してください。

+0

変換するには、このLIBを使用しますが、それは魅力のように働きました。 – jeteon

4

Setasignは、PDFパーサーとしてcommercial addonをFPDIに提供しています。新しいパーサーを使用してこれまでのバージョン1.7までのPDFファイルを解析するのに問題はありませんでした。

+0

このアドオンでどのように作業したか教えてください。私はそれをどのように使用するかについての手がかりがないので。私はそれを使用する方法がわからない、ファイルをインストールしました。私は次のPDFmergerを使用しています。github.com/myokyawhtun/PDFMerger/blob/master/PDFMerger.php#L 78 –

-1

私のチームはコードの一部を削除しました。私たちは、pdfにウォーターマークを追加するコードを停止しました。これは私たちの問題を解決しました。 PDF> = 1.5

6

私はちょうどまで試験(V1.4上のPDFファイルをインポートするには、TCPDF 6(およびFPDF_TPL)と協力プロジェクトのペアを(TCPDI/tcpdi_parser、それぞれFPDIとtcpdf_parserに基づく)をリリースしました1.6これまでのところ、商用アドオンを必要とせずに、1.7でPFDをテストすると1.7で動作することを確認します)。基本的なインストール方法と使用方法は、TCPDI READMEにあります。気軽に試してみて、Githubトラッカーから問題を報告してください。

+0

PDFをテキストに追加しようとしましたが、動作しません。 – greg

+0

あなたのPDFがパスワードで保護されていない場合は、あなたがやろうとしていることと何が起こったのかについての詳細(関連するプロジェクト(TCPDIまたはtcpdi_parser) 。私は調査しようとしますが、時間枠で約束をすることはできません。 – NullColaShip

+0

さて、ありがとう、ありがとう。 – greg

1

Acrobat PDFライターをお持ちの場合は、印刷/保存しているPDFをPDF 1.4と互換性のあるものにするためにジョブ設定を操作できます。私はこの製品が必要な小さな理由のため、1.4より大きなバージョンと互換性のある商用バージョンを手に入れるのに100ユーロの価値はないようです。

3

はsymfonyのために、私は、入力としてPDFで動作するコマンド `ps2pdf14`を期待していません> 1.4 https://packagist.org/packages/xthiago/pdf-version-converter

+1

あなたは知っています...私は実際にこのようなものを他の問題に対処するためにある時点で実装したと思います。私はちょうど私の場合はゴーストスクリプトを呼び出すが、これは人生を少し楽にするかもしれない。 –

+1

私は 'xthiago/pdf-version-converter'の著者です。このライブラリは、どのPHPプロジェクトでも使用できます。Symfony Framework(Full Stack)を使用する必要はありません。ライブラリは内部的にSymfonyの2つのコンポーネント(プロセスとファイルシステム)を使いますが、作曲家はそれを気にします。 単体テスト(PHPUnit)があり、オープンソースなのでライブラリの使用をお勧めします。コミュニティによるバグ修正や機能拡張のメリットがあります。 –

関連する問題