PDFファイルとは何ですか? |知識ベース
導入
“pdls”に関する記事から既に知っているように、PDFは静的なページ説明言語で、厳密な構造を持つ言語です。
PDFは、Adobeの開発者がその仕様に追加したさまざまな機能により、最も人気のあるページ説明言語の1つです。さらに、Adobeは、ドキュメントでこれらの機能を実現できるツールを人々に提供します。この記事は、PDFの構文、構造、機能の簡単なレビューです。
PDFファイルとは何ですか?
PDFまたは省略されたポータブルドキュメント形式を開発するという最初の目標は、デバイスに依存しない、解像度に依存しない環境におけるデジタルドキュメントインターチェンジの多数の要件を満たすドキュメント形式を作成することでした。これらの要件には、インタラクティブなビュー、高性能ナビゲーション、低ディスクスペースの職業、ドキュメントのコワーキング、さまざまなメディアコンテンツのサポート、暗号化、署名、フォーム作成、プレゼンテーションなどが含まれます。デジタルドキュメントインターチェンジの徹底的な形式を企業に提供する最初の意図にもかかわらず、後で仕様に高品質の印刷機能も追加されました。
PDFファイルの構文
PDFには、Postscriptのものから派生したイメージングモデルがあり、1-2文字、長い演算子、およびAI形式でも使用されており、必要なオペランドがすべてオペレーターの前に行くPostfix BNF構文もあります。
operand1...operandm operator |
演算子の長さに加えて、PDFとPostScript演算子の間にはいくつかの違いがあります。 PDFでは、PostScriptスタックからPostScriptでオペランドが取得されている間、すべての必要なオペランドが演算子の前にすべてのオペランドに先行する必要があります。 PDFでは、オペレーターはPostScriptにある可能性があるため、結果を返しません。 PDFオペレーターは、グラフィックスやテキストを描画したり、グラフィック環境でプロパティを設定したりするなど、ページを作成するためのアクションを実行します。 PostScriptでは、オペレーターはすべての作業を行います。
通常、PDFファイルのコンテンツのほとんどは、Flateエンコードで圧縮され、この方法はバイナリです。圧縮に加えて、PDFファイルを暗号化して、ドキュメントコンテンツへのアクセスを制限することもできます。したがって、ファイル全体をバイナリとして扱う必要があります。 PDFファイルが圧縮も暗号化されておらず、画像、サウンド、ビデオなどのバイナリコンテンツが含まれていない場合にのみ、テキストと見なすことができます。
PDF仕様オブジェクト
PDF仕様にはタイプの同義語がありますが、PostScriptには原始的で複雑なタイプがあり、最後は「オブジェクト」と呼ばれます。 したがって、PDFのすべてのタイプは、単純または複雑なものであり、オブジェクトです。 PDF言語は、ブール値、整数、実数、名前、文字列、配列、辞書、およびストリームで構成されています。文字列は、以下に示すように、文字通りまたは16進形式の形式である可能性があります。
( This is a string )<4E6F762073686D6F7A206B6120706F702E> | literal formathexadecimal format |
配列は正方形の括弧で囲まれています。 4つの要素を持つサブタイプの長方形 - 配列が含まれています。
辞書は、キーが名前または文字列(名前の辞書の場合)で、値がオブジェクトまたはオブジェクト参照であるキー値ペアにデータを保存します。ダブルアングルブラケットに囲まれています。辞書には、特定の辞書に保存されているデータを示すタイプフィールドがあります。
<< /Type /Example /Subtype /DictionaryExample /Version 0 . 01 /IntegerItem 12 /StringItem ( a string ) /Subdictionary << /Item1 0 . 4 /Item2 true /LastItem ( not ! ) /VeryLastItem ( OK ) >>>>endobj |
オブジェクトは直接的で間接的にすることができます。間接的なオブジェクトとは、IDで他のオブジェクトから紹介できるオブジェクトです。
ストリームは、通常、バイナリまたはエンコードされたデータを含むオブジェクトです。それらは人間を読み取ることができず、長さに制限がありません。通常、PDFファイルには、圧縮されたページコンテンツまたは画像、またはその他のメディアが含まれています。ストリームオブジェクトは、ストリームの長さの直接辞書と、ストリームのエンコードに使用されるフィルターの配列と、キーワードストリームの後にデータをエンコードしたフィルターの配列で構成されています。
181 0 obj << /Length 473 0 R /Subtype /Image /Width 2 /Height 19 /BitsPerComponent 8 /ColorSpace /DeviceGray /Filter [/ASCII85Decode /FlateDecode] >>streamGb"[2*s<F2i'/7_!,1%/hZ~>endstreamendobj |
PDFオペレーター
オペレーターは、ページグラフィックを作成する一種の直接オブジェクトであり、前述のように、1レッターまたは2文字のキーワードで表されます。 PDFオペレーターには2種類あります。
* アクションを実行したり、グラフィックス状態のプロパティを設定したりします。
PDF operator x y mx y lx1 y1 x2 y2 x3 y3 chx y width height rea b c d e f cmSsfFWfont size TfcharSpace TcqQlineWidth wlineCap Jfont size TfcharSpace Tc | Description 現在の点を座標 (x, y) に移動して新しいサブパスを開始します。現在の点から点 (x, y) への直線を追加します。現在のパスに3次ベジェ曲線を追加します。現在のサブパスを閉じます。現在のパスに四角形を追加します。指定された行列を連結して、現在の変換行列を変更します。パスをストロークします。同じですが、パスを閉じます。パスを塗りつぶします。同じですが、パスを閉じます。現在のクリッピングパスを現在のパスと交差させることで変更します。テキストフォントを font に、テキストフォントサイズを size に設定します。文字間隔を charSpace に設定します。現在のグラフィックス状態をグラフィックス状態スタックに保存します。グラフィックス状態からグラフィックス状態を復元します。スタックグラフィックス状態で線幅を設定しますグラフィックス状態で線端のスタイルを設定しますテキストフォントを font に、テキストフォントサイズを size に設定します文字間隔を charSpace に設定します |
* グループ化
PDF operator BT...ETBI...EIBMC...EMCBX...EX | Description テキストオブジェクトの開始と終了画像オブジェクトの開始と終了マークされたコンテンツシーケンスの開始と終了互換性セクションの開始と終了 |
特別な種類のグループ化演算子は bx … ex です。彼らは、未確認のオブジェクトを無視する必要があるページコンテンツの一部を同封します。したがって、それらはai %_ pseudo-commentsに相当します。
PDFファイル構造
PDFファイルには、4つの必須構造要素があります。
- PDF言語のバージョンが書かれている1行ヘッダー
%PDF-1.5 |
ドキュメントのオブジェクトを含む本体。本文の構造については、この記事の後半で説明します。
相互参照テーブル。ドキュメントのオブジェクトへの迅速なランダムアクセスに使用されます。ファイルの開始時からオブジェクトの先頭にバイトのオフセットが含まれています。
xref0 60000000003 65535 f0000000017 00000 n0000000081 00000 n0000000000 00007 f0000000331 00000 n0000000409 00000 n |
- トレーラーは、最後の相互参照テーブルを指し、相互参照テーブルに共通の量のオブジェクトが含まれています。 ドキュメントのIDと次の参照:
- ファイルに複数のものがある場合、以前の相互参照テーブル。
- カタログ辞書で表されるドキュメントルート。
- 著者、作成者、タイトル、キーワード、作成および修正日フィールドを備えたメタ情報辞書。
- ドキュメントが暗号化されている場合、暗号化辞書。
trailer << /Size 15 /Root 2 0 R /Info 1 0 R >>startxref6224 |
ドキュメントを更新するたびに、新しい相互参照テーブルとトレーラーが追加されます。記事の後半で説明します。
ドキュメント構造
PDFドキュメントには、ルートがカタログ辞書であるツリーのような構造があります。
カタログには、ページの記述サブツリー、アウトラインサブツリー、その他のドキュメントレベルのサブツリーとリーフノードに参照が含まれています。
2 0 obj << /Type /Catalog /Pages 3 0 R /Outlines 4 0 R /PageMode /UseOutlines /ViewerPreferences 5 0 R /OpenAction [6 0 R /Fit] >>endobj |
ページツリーには、ページツリーノードとページリーフノードの順序付けが含まれています。ページのセットと検索アルゴリズムの正確なツリーのような構造を使用すると、数千ページにわたって迅速にナビゲートして必要なページを見つけることができます。
Page Dictionaryには、上の図にあるか、非圧縮されていないときに圧縮できるコンテンツストリーム上の参照が含まれています。最後のケースでは、下の図のように、人間が読み取るテキストにPDF演算子が表示されます。
7 0 obj << /Length 8 0 R >>stream1 0 0 1 0 0 cm0 0 m595 0 l595 842 l0 842 lhWnq/Alpha1 gs0 0 0 rg0 0 0 RG0 Jq0.96593 0.25882 -0.25882 0.96593 0 0 cm1 0 0 1 0 0.25882 cm0.02 w-0.96593 0 m0 -0.25882 l0 -0.25882 0 -0.25882 0 -0.25882 c0.14294 -0.25882 0.25882 -0.14294 0.25882 0 c0.25882 0.14294 0.14294 0.25882 0 0.25882 chSQendstreamendobj |
子ノードの配列(Page-TreeまたはPage Nodes)ページに加えて、辞書にはリソース辞書への参照が含まれています。
9 0 obj << /ProcSet 10 0 R /XObject 11 0 R /Font 12 0 R /ExtGState 13 0 R >>endobj |
注釈やその他のサブツリーは、機能セクションでさりげなく言及されます
特徴
PDF形式のグラフィックの可能性
グラフィックスとテキストを描画する際に、ほとんどのページ説明言語の可能性について共通することに言及することはありません。サポートされているフォントとカラースペースの豊かさは、PostScriptと同じであると言うだけです。
Fonts - Adobe Type 0- Adobe Type 1- Compact Fonts (CFF)- Chameleon- TrueType- CID-keyed | Color spaces - DeviceGray- DeviceRGB- DeviceCMYK- DeviceN- Separated colors- Spot- CIE-based |
透明性
PDFは透明性をサポートします。
外部ファイル
メディアまたはドキュメントファイルは、PDFに埋め込むか、ドキュメントから参照できます。
ハイパーリンク
ハイパーリンクはPDFでサポートされています。
選挙およびインタラクティブな見解
PDFは、特定の使用法と他の使用に必要なコンテンツの一部とその外観を表示することができます。たとえば、Adobe Illustratorのグラフィックスをインポートするときは、Adobe Illustratorで作業するために必要なものがありますが、Adobe Acrobat Readerで見るためには必要ありません。選挙図の別のケースは、異なる言語で書かれている、または障害のあるユーザー向けに表されるが、1つの文書に保存される記事です。使用のさまざまなバリエーションもあります。表示、設計、印刷の1つのビューです。
PDFのインタラクティブなビューには能力が含まれます。
- ドキュメントの一部に注釈を表示/追加する。
- すべてのエディションを表示する可能性を備えたドキュメントを編集するには。
- 特定の被験者によって収集された記事のさまざまなスレッドでドキュメントのコンテンツを注文する。
注釈は、メモ、音声、ビデオ、またはその他のコンテンツを含む一種のフローティング ボックスです。
インタラクティブナビゲーション
ドキュメントのさまざまな部分間のナビゲートは、いくつかの方法で実現できます。
- ドキュメントを最初から必要なページに連続してページごとに移動します。
- ドキュメントのある部分から別の部分からアウトラインアイテムを備えたものにジャンプします。
- サムネイル画像をクリックして、あるページから別のページにジャンプします。
- ドキュメントのある部分から別の部分から別の部分にジャンプして、記事のスレッドアイテムをジャンプします。
- ドキュメントのある部分から別の部分から別の部分にジャンプして、ビューポートを使用して、<タブ>を押してそれらを移動します。
ビューポートによる移動とドキュメントの一部の非表示は、Viewport および NavigationNode 辞書によって実現されます。
増分更新
PDFドキュメントで行われたすべての変更は、以前のコンテンツを消去することなくドキュメントに追加されます。また、ドキュメントが変更されるたびに、新しいXref(相互参照テーブル)とトレーラーが追加されます。新しい相互参照テーブルには、追加または削除されたオブジェクトと前の相互参照テーブルに参照が含まれています。このようなメカニズムにより、最終的なドキュメントコンテンツをまとめ、同時にドキュメントの以前の状態を保存することができます。
パフォーマンス
ページを通過するナビゲートの高性能は、ツリーのような構造と効果的な検索アルゴリズムによって提供されます。ただし、繰り返しのグラフィック要素を1つのオブジェクトに組み合わせて、 form xobject と呼ばれ、必要なすべての場所で1つのオブジェクトを使用することでさらに増やすことができます。また、高性能ビューのためにドキュメント全体を最適化する方法もあります。それは線形化です。線形化は、WebがアクセスしたPDFドキュメントを効果的に表示するために最初に発明されました。線形化されたPDFドキュメントは読み取り専用です。これを変更すると、線形化が繰り返される必要があります。
ドキュメントオブジェクト間のナビゲートの高性能は、ファイルの開始からオブジェクトのオフセットを保存する相互参照テーブルによって実現されます。
圧縮
通常、フラットなエンコードであるPDFドキュメントの圧縮により、ディスクスペースが比較的低い大規模なドキュメントを作成できます。たとえば、アウトライン、サムネイル、画像、テーブルを備えた758ページを含むPDF仕様ファイルには、約9 MBのサイズがあります。
安全
PDFドキュメントを暗号化して、特定のユーザーにのみ差別化されたアクセスを提供し、署名することができます。デジタル署名機能により、ユーザーのIDとドキュメントのコンテンツを認証できます。 Digital Signatureは、ユーザー情報で署名されたときにドキュメント状態にバインドされます。デジタル署名は、任意の形式であることができます。 対応する署名ハンドラーが提供される場合、純粋に数学的なスキャンから網膜スキャンまで。
インタラクティブフォーム
ユーザーから情報を収集するために使用されます。インタラクティブフォーム、またはいわゆる acroforms は、ユーザーデータをサーバーに検証、フォーマット、および送信できます。
プレゼンテーション
PDFにはいくつかの提示手段があります:
- ドキュメントが開かれたときに実行されるアクション。
- ページが開かれたときに実行されるアクション。
- ページを表示する期間。* ページからページへと通過するときに表示される効果。
メディアコンテンツ
画像、サウンド、映画クリップ、3Dグラフィックスは、PDFドキュメントに追加できます。
抽出データ
PDFを使用すると、必要なデータを抽出する可能性を外部アプリケーションに提供する特定のマークアップを追加できます。 タグ付きPDF と呼ばれるそのようなマークアップを備えたドキュメント。
サポートを準備します
公開の準備には、プリンターのマーク、色の分離、出力意図、トラッピングが含まれます。
PDFファイルの使用は何ですか?
PDFドキュメントの主なアプリケーションは、さまざまな環境での電子文書の交換と表示です。
PDFファイルを作成するにはどうすればよいですか?
PDFドキュメントの作成と編集は、スタンドアロンAdobe Acrobatアプリケーションで可能です。
PDFファイルを開くにはどうすればよいですか?
Standalone Adobe Acrobat ReaderアプリケーションまたはPDFプラグイン付きGoogle ChromeブラウザーでPDFファイルを開いて表示できます。また、Sumatra PDF、Foxit Reader、Free PDFreaderなどのシンプルなユーティリティが役立ちます。別の方法は、たとえばGoogleドライブでPDFをオンラインで表示することです。