-1

私はPDFファイル形式を学ぼうとしています。

この目的のために、Adobe の PDF 仕様ファイルをダウンロードしましたが、これは巨大です。

そこで、PDF の詳細を学習するために、実際の PDF ファイルをいくつか並行して見て、その抽象的な説明をたどりたいと思います。

たとえば、1 つのアイデアは、1 ページだけでコンテンツとしてa.

しかし、この PDF ファイルを 16 進数エディター (または内部 PDF 構造を表示できる他のツール) で開くと、この PDF 内に大量のバイナリまたは圧縮コンテンツが含まれています。例として、以下のスクリーンショットをご覧ください。

PDF を開く 16 進エディタのスクリーンショット

このバイナリのどの部分がaこの PDF で自分のキャラクターを表しているのかを単純に特定できません。

これまでに試したすべての実際の PDF ファイルでも同じことが起こります。一般的な PDF 言語仕様を理解するのに役立つ実際のコード例を含む PDF ファイルが見つかりません。

  • 他の人に説明してもらいたいのですが、実際の PDF ファイルでその断片を検証しながら、同時に PDF 仕様を研究する実用的な方法はありますか?

  • I would like to know: which software tools are commonly used by PDF programmers that would help a newbie developer like me to dissect and un-compress existing binary PDF files so their source code can be investigated using a simple text editor? (Note: I'm not asking for a recommendation. In compliance with the SO FAQ I just want to know if such tools do exist, and which names they have.)

  • Is there a resource of freely available PDF files which don't contain binary and/or compressed content? Or how could I create my own such example files?

  • Are there (preferably free) PDF editors/parsers available which can visualize + dissect the raw binary data of PDF files and expose their structure?

最初のフックだけが必要です。あなたが望むなら、現実世界のPDFファイルの密林の狭い道への入り口であり、私はそれをたどることができます...「PDF仕様」と呼ばれるこのブッシュワッカーの助けを借りながら。

4

4 に答える 4

6

iText (PDF を作成および操作するための Java/C# ライブラリ) の作成者は、RUPS というツールを公開しまし

ソースフォージのページから:

RUPS は、Reading and Updating PDF Syntax の略です。RUPS は iText® の上に構築されたツールで、PDF ドキュメント内を調べて、さまざまな PDF オブジェクトとコンテンツ ストリームを参照できます。(PDF の更新はまだできません。)

于 2012-09-27T12:07:52.680 に答える
5

私が PDF 構文を学ぶのを手伝った方法は次のとおりです。

  • PDF を解凍できるツールを探しました (内部ストリームを解凍します)。

  • Jay Birkenbiltのコマンドライン ツール qpdf が見つかりました。次のように説明されています

  • 定期的に実行していqpdf --qdf input.pdf decompressed-input.pdfます。

  • 新しく作成decompressed-input.pdfした をテキスト エディタで開きます。

この--qdfツールのモードは、PDF のバイナリ要素と ASCII 要素を非常に便利な方法で変換します。ページの視覚的な外観を変更することはありません (しかも非常に高速です)。

  1. 以前に圧縮されたオブジェクトを解凍します (ページ要素描画操作の PDF 言語ソース コードを公開します)。

  2. また、オブジェクト ストリームを展開します ( ObjStrm)。

  3. 配列、文字列などの表示を正規化します。

  4. オブジェクトの番号を付け1 0 obj直して、ファイル内で昇順に表示します。

  5. xref壊れたエントリを修復します。

  6. オブジェクトの元の ID を含むコメントを元のファイルに追加します。

  7. 各ページにコメントを追加します。

  8. …その他もろもろ。

これらの (現在はほとんどが ASCII) ファイルを通常のテキスト エディターで見ることは、元のバイナリ PDF を理解しようとするよりもはるかに簡単です。

于 2012-09-27T21:55:38.313 に答える
5

PDF Vole (iText ベースのツールで、RUPSに類似したツール) を使用していくつかのファイルを確認することをお勧めします。

PDF Vole と RUPS の両方を使用すると、PDF ファイルの構造をナビゲートし、すべてのオブジェクトのエントリを検査し、圧縮されたストリームを解凍し、必要に応じてファイルを復号化し、ページと注釈の内容を確認し、それらの間の関係を追跡できます。ファイル内のオブジェクト。

たとえば、次のファイル:
PDFサンプル

PDF Vole では次のようになります。
PDFハタネズミ捕獲

また、iText 自体のクラス階層 (PDF 仕様とほぼ 1 対 1 です) と、それを説明している本iText in Actionを参照することもできます。

于 2012-09-27T13:41:58.177 に答える
2

コードで PDF ファイルを生成しようとしている場合は、このCodeProject ソース コードが役立ちます。

アドビの仕様に沿ったコードで作業を進めることができます。近道はあまりないと思います。PostScript を理解するには、少し勉強が必要です!

編集: PDF は PostScript で圧縮されているため、RoPSのようなものも便利です。

于 2012-09-27T11:24:14.767 に答える