こんにちは、いくつかのPDF Generators for php(fpdf、dompdfなど)について知っています。)私が知りたいのはパーサーについてです。
私が制御できない理由から、必要な特定の情報はpdf内のテーブルにのみあり、そのテーブルを抽出して配列に変換する必要があります。
助言がありますか?
私は以前に(同様のニーズのために)書いたことがあり、これを言うことができます:楽しんでください。それは非常に複雑なタスクです。 PDF仕様 は大きくて扱いにくい。内部にテキストを保存する方法はいくつかあります。そして、キッカーは、各PDFジェネレーターの動作が異なるということです。したがって、TFPDFやDOMPDFのようなものは非常に読みやすいPDFを(マシンの観点から)作成します。 。
その理由は、テキストの書き方です。私が使用したほとんどのDOMベースのレンダラーは、行全体を1つの文字列として記述し、1回配置します(読みやすくなっています)。 Acrobatは、一度に1つまたは数個の文字のみを記述し、それらを独立して配置することにより、より効率的に(そして実際に)しようとします。これにより、レンダリングが本当に簡単になりますが、読み取りが非常に難しくなります。
ここでの利点は、PDFの形式自体は非常に単純です。通常の構文に従う「オブジェクト」があります。次に、それらをリンクしてコンテンツを生成できます。仕様ではファイル形式を説明するのは良い仕事ですが、現実世界の読書には少し頭の力が必要です...
あなたがそれを自分で書くつもりなら難しい方法を学ばなければならなかったアドバイスのいくつかの有用な部分:
65
_はA
ではない可能性があります...マップオブジェクトを見つけて、そこにある文字に基づいてそれが何をしているのかを推測する必要があります。また、そのフォントのドキュメントに文字が表示されない場合は含まれないため、効率的です(プログラムでPDFを編集しようとすると、生活が難しくなります)。strlen
を使用しないでください。 mb_strlen($string, '8bit')
を使用します。異なる文字セットを補正するためです(また、他の文字セットで潜在的に無効な文字を許可します)。そうでなければ、幸運を...
そのためにPDFBoxを使用します( http://pdfbox.Apache.org/ )。このソフトウェアはjavaベースであり、プラットフォームに依存しません。それは高速で信頼性があります。 execまたはShell executeまたはPHP/Java-Bridge( http://php-Java-bridge.sourceforge.net/ )経由で使用できます。
GhostScriptまたはITextSharpをご覧ください。両方のクロスプラットフォームバージョンがあります。
Zend_Pdf は Zend Framework の一部です。マニュアルの状態:
Zend_Pdf
コンポーネントはPDF(Portable Document Format)操作エンジンです。ドキュメントをロード、作成、変更、保存できます。したがって、任意のPHPアプリケーションPDFドキュメントを動的に作成します。既存のドキュメントを変更するか、新しいドキュメントを最初から生成します。
PDFはそのような情報を失うため、実際にはPDF内のテーブルではない可能性があります...
これはPHP =PDFパーサー、次の2つのフレーバーがあります。