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 format
hexadecimal 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間接オブジェクト

ストリームは、通常、バイナリまたはエンコードされたデータを含むオブジェクトです。それらは人間を読み取ることができず、長さに制限がありません。通常、PDFファイルには、圧縮されたページコンテンツまたは画像、またはその他のメディアが含まれています。ストリームオブジェクトは、ストリームの長さの直接辞書と、ストリームのエンコードに使用されるフィルターの配列と、キーワードストリームの後にデータをエンコードしたフィルターの配列で構成されています。

181 0 obj
  <<
    /Length 473 0 R
    /Subtype /Image
    /Width 2
    /Height 19
    /BitsPerComponent 8
    /ColorSpace /DeviceGray
    /Filter [/ASCII85Decode /FlateDecode]
  >>
stream
Gb"[2*s<F2i'/7_!,1%/hZ~>
endstream
endobj

PDFオペレーター

オペレーターは、ページグラフィックを作成する一種の直接オブジェクトであり、前述のように、1レッターまたは2文字のキーワードで表されます。 PDFオペレーターには2種類あります。

* executing actions or setting properties of the graphics state.

PDF operator

x y m
x y l
x1 y1 x2 y2 x3 y3 c
h
x y width height re
a b c d e f cm
S
s
f
F
W
font size Tf
charSpace Tc
q
Q
lineWidth w
lineCap J
font size Tf
charSpace Tc

Description

begin a new subpath by moving the current point to coordinates (x, y)
append a straight line segment from the current point to the point (x, y)
append a cubic Bezier curve to the current path
close the current subpath
append a rectangle to the current path
modify the current transformation matrix by concatenating the specified matrix
stroke the path
the same, but close path
fill the path
the same, but close path
modify the current clipping path by intersecting it with the current path
set the text font to font and the text font size to size
set the character spacing to charSpace
save the current graphics state on the graphics state stack
restore graphics state from the graphics state stack
set the line width in the graphics state
set the line cap style in the graphics state
set the text font to font and the text font size to size
set the character spacing to charSpace

* grouping

PDF operator

BT...ET
BI...EI
BMC...EMC
BX...EX

Description

begin and end a text object
begin and end an image object
begin and end a marked-content sequence
begin and end a compatibility section

特別な種類のグループ化演算子は bx … ex です。彼らは、未確認のオブジェクトを無視する必要があるページコンテンツの一部を同封します。したがって、それらはai %_ pseudo-commentsに相当します。

PDFファイル構造

PDFファイルには、4つの必須構造要素があります。

PDFファイル構造

  1. PDF言語のバージョンが書かれている1行ヘッダー

%PDF-1.5

  1. ドキュメントのオブジェクトを含む本体。本文の構造については、この記事の後半で説明します。

  2. 相互参照テーブル。ドキュメントのオブジェクトへの迅速なランダムアクセスに使用されます。ファイルの開始時からオブジェクトの先頭にバイトのオフセットが含まれています。

xref
0 6
0000000003 65535 f
0000000017 00000 n
0000000081 00000 n
0000000000 00007 f
0000000331 00000 n
0000000409 00000 n

  1. トレーラーは、最後の相互参照テーブルを指し、相互参照テーブルに共通の量のオブジェクトが含まれています。 ドキュメントのIDと次の参照:

trailer
  <<
    /Size 15
    /Root 2 0 R
    /Info 1 0 R
  >>
startxref
6224

ドキュメントを更新するたびに、新しい相互参照テーブルとトレーラーが追加されます。記事の後半で説明します。

ドキュメント構造

PDFドキュメントには、ルートがカタログ辞書であるツリーのような構造があります。

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

ページツリーには、ページツリーノードとページリーフノードの順序付けが含まれています。ページのセットと検索アルゴリズムの正確なツリーのような構造を使用すると、数千ページにわたって迅速にナビゲートして必要なページを見つけることができます。

PDFページコンテンツストリーム

Page Dictionaryには、上の図にあるか、非圧縮されていないときに圧縮できるコンテンツストリーム上の参照が含まれています。最後のケースでは、下の図のように、人間が読み取るテキストにPDF演算子が表示されます。

7 0 obj
  <<
    /Length 8 0 R
  >>
stream
1 0 0 1 0 0 cm
0 0 m
595 0 l
595 842 l
0 842 l
h
W
n
q
/Alpha1 gs
0 0 0 rg
0 0 0 RG
0 J
q
0.96593 0.25882 -0.25882 0.96593 0 0 cm
1 0 0 1 0 0.25882 cm
0.02 w
-0.96593 0 m
0 -0.25882 l
0 -0.25882 0 -0.25882 0 -0.25882 c
0.14294 -0.25882 0.25882 -0.14294 0.25882 0 c
0.25882 0.14294 0.14294 0.25882 0 0.25882 c
h
S
Q
endstream
endobj

子ノードの配列(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 Adob​​e Acrobat ReaderアプリケーションまたはPDFプラグイン付きGoogle ChromeブラウザーでPDFファイルを開いて表示できます。また、Sumatra PDF、Foxit Reader、Free PDFreaderなどのシンプルなユーティリティが役立ちます。別の方法は、たとえばGoogleドライブでPDFをオンラインで表示することです。

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.