PDF(Portable Document Format )は、 ISO 32000として標準化されており、1992年にAdobe社が開発したファイル形式で、テキストフォーマットや画像を含む文書を、アプリケーションソフトウェア、ハードウェア、オペレーティングシステムに依存しない方法で表示します。[2] [3] PostScript言語をベースにした各PDFファイルは、テキスト、フォント、ベクターグラフィック、ラスター画像、表示に必要なその他の情報など、固定レイアウトのフラット文書の完全な記述をカプセル化します。PDFは、 1991年にAdobe社の共同設立者であるジョン・ワーノック氏が開始した「キャメロットプロジェクト」に端を発しています。 [4] PDFは2008年にISO 32000として標準化されました。[5] PDFはISO TC 171 SC 2 WG8によって保守されており、PDF協会が委員会マネージャを務めています。[6] ISO 32000-2:2020の最新版は2020年12月に発行されました。[7]
PDFファイルには、フラットなテキストやグラフィックに加え、論理構造要素、注釈やフォームフィールドなどのインタラクティブ要素、レイヤー、リッチメディア(動画コンテンツを含む)、 U3DまたはPRCを使用した3次元オブジェクト、その他様々なデータ形式など、多様なコンテンツが含まれます。PDF仕様では、暗号化、デジタル署名、ファイル添付、メタデータも規定されており、これらの機能を必要とするワークフローを実現します。
PDFの開発は、1991年にジョン・ワーノックが当時コードネーム「キャメロット」と呼ばれていたプロジェクトのために論文を執筆したことから始まりました。彼はその中で、PostScriptの簡易版であるInterchange PostScript (IPS)の開発を提案しました。[8]従来のPostScriptは印刷ジョブを出力デバイスにレンダリングすることに重点を置いていましたが、IPSはあらゆる画面やプラットフォームにページを表示できるように最適化されていました。[8]
Adobe Systems は1993 年に PDF 仕様を無料で公開しました。初期の PDF は主にデスクトップ パブリッシングワークフローで人気があり、DjVu、Envoy、Common Ground Digital Paper、Farallon Replica、さらには Adobe 独自の PostScript 形式など、他のいくつかの形式と競合していました。
PDFは、2008年7月1日にオープンスタンダードとしてリリースされ、国際標準化機構(ISO)によってISO 32000-1:2008として発行されるまで、Adobeが管理する独自のフォーマットでした。 [9] [10]この時点で、仕様の管理は業界の専門家ボランティアで構成されるISO委員会に移管されました。2008年、AdobeはISO 32000-1のパブリック特許ライセンスを発行し、PDF準拠の実装の作成、使用、販売、配布に必要なAdobeが保有するすべての特許について、ロイヤリティフリーの権利を付与しました。 [11]
ISO 32000-1となったPDF仕様の第6版であるPDF 1.7には、Adobe XML Forms Architecture(XFA)やAcrobatのJavaScript拡張機能など、Adobeが独自に定義した独自技術がいくつか含まれており、これらはISO 32000-1では規範として参照され、ISO 32000-1仕様の完全な実装に不可欠なものとなっています。[12]これらの独自技術は標準化されておらず、仕様はAdobeのWebサイトでのみ公開されています。[13] [14] [15]その多くは、一般的なサードパーティのPDF実装ではサポートされていません。
ISOは2017年にPDFのバージョン2.0であるISO 32000-2を公開し、Adobeが無料で提供していた仕様に代わるものとして購入できるようになりました。[16] 2020年12月には、PDF 2.0の第2版であるISO 32000-2:2020が公開され、規範的参照の明確化、訂正、重要な更新が行われました[17](ISO 32000-2には規範的参照として独自の技術は含まれていません)。[18] 2023年4月、PDF協会はISO 32000-2を無料でダウンロードできるようにしました。[16]
PDFファイルは、多くの場合、ベクターグラフィック、テキスト、ビットマップグラフィックの組み合わせです。PDFに含まれるコンテンツの基本的な種類は次のとおりです。
以降の PDF リビジョンでは、PDF ドキュメントは、リンク (ドキュメント内または Web ページ内)、フォーム、JavaScript (最初は Acrobat 3.0 のプラグインとして利用可能)、またはプラグインを使用して処理できるその他の種類の埋め込みコンテンツもサポートできます。
PDF は次の 3 つのテクノロジを組み合わせています。
PostScriptは、画像を生成するためにインタープリタ内で実行されるページ記述言語です。 [8]グラフィックスを扱うことができ、分岐やループといったプログラミング言語の標準的な機能を備えています。[8] PDFはPostScriptのサブセットであり、そのような制御フロー機能を削除して簡素化されていますが、グラフィックスコマンドは残っています。[8]
PostScriptは元々、全く異なる用途、すなわち一方向の線形印刷ジョブの送信のために設計されました。PostScriptインタープリタは、showpageコマンドに遭遇するまで一連のコマンドを収集し、その後、すべてのコマンドを実行してページをラスターイメージとして印刷デバイスにレンダリングします。[19] PostScriptは、電子文書をコンピュータモニタに長期保存したり、リアルタイムでインタラクティブにレンダリングしたりすることを目的としていなかったため、ページの連続レンダリング以外の機能をサポートする必要はありませんでした。[19]最終的な印刷出力にエラーがあった場合、ユーザーはアプリケーションレベルでエラーを修正し、全く新しいPostScriptファイルの形式で新しい印刷ジョブを送信します。したがって、PostScriptファイル内の任意のページを正確にレンダリングするには、先行するすべてのページを描画するためのコマンド(いずれのコマンドも後続のページに影響を与える可能性があります)と、その特定のページを描画するためのコマンドの実行という累積的な結果のみが必要でした。このプロセスをバイパスして別のページに移動することは容易ではありませんでした。[19]
従来、PostScriptからPDFに変換するには、ソースPostScriptファイル(つまり、実行可能プログラム)がPostScript風のPDFコードを生成するためのベースとして使用されます(Adobe Distillerを参照)。これは、ループの展開、インライン展開、未使用の分岐の削除などの標準的なコンパイラ技術を適用することで行われ、結果として、完全に宣言的で静的なコードが生成されます。[19]次に、結果は、正しくレンダリングするために必要なすべての依存関係(ドキュメントが参照する外部ファイル、グラフィック、またはフォント)とともに、コンテナ形式にパッケージ化され、圧縮されます。最近のアプリケーションは、最初にPostScriptを経由するのではなく、直接PDFを生成するプリンタドライバに書き込みます。
ドキュメント形式として、PDF には PostScript に比べていくつかの利点があります。
欠点は次のとおりです。
PDFバージョン1.6以降ではインタラクティブな3Dドキュメントの埋め込みがサポートされており、 U3DやPRCなどの様々なデータ形式を使用して3D図面を埋め込むことができます。[22] [23] [24]
PDFファイルは、バイナリコンテンツを含む可能性のある特定の要素を除き、ASCII文字を使用して構成されます。ファイルは、マジックナンバー(読み取り可能な文字列)と形式のバージョン(例: )を含むヘッダーで始まります%PDF-1.7。この形式は、COS(「カルーセル」オブジェクト構造)形式のサブセットです。[25] COSツリーファイルは主にオブジェクトで構成され、オブジェクトには9つのタイプがあります。[18]
(...))で囲むか、山括弧(<...>)で囲まれた16進数で表されます。文字列には8ビット文字を含めることができます。/)で始まる名前[...])で囲まれたオブジェクトの順序付きコレクションです。<<...>>、二重山括弧( )で囲まれた名前でインデックス付けされたオブジェクトのコレクションstreamとendstreamキーワードで囲まれます。先頭にパーセント記号 ( ) が付いた 8 ビット文字を使用したコメント%を挿入できます。
オブジェクトは、直接オブジェクト(別のオブジェクトに埋め込まれる)または間接オブジェクトのいずれかです。間接オブジェクトは、オブジェクト番号と世代番号で番号付けされ、ドキュメントルートに存在する場合はキーワードobjとキーワードの間で定義されます。PDF バージョン 1.5 以降では、間接オブジェクト(他のストリームを除く)は、オブジェクト ストリーム( でマークされる)と呼ばれる特別なストリームに配置できるようになっています。この手法により、非ストリーム オブジェクトに標準のストリーム フィルターを適用できるようになり、多数の小さな間接オブジェクトを含むファイルのサイズが削減されます。これは特にタグ付き PDFで役立ちます。オブジェクト ストリームでは、オブジェクトの世代番号(0 以外)
の指定はサポートされていません。endobj/Type /ObjStm
インデックステーブル(相互参照テーブルとも呼ばれる)は、ファイルの終わり近くに配置され、ファイルの先頭からの間接オブジェクトのバイトオフセットを示します。[26]この設計により、ファイル内のオブジェクトへの効率的なランダムアクセスが可能になり、ファイル全体を書き換えずに小さな変更を加えることもできます(増分更新)。 PDFバージョン1.5より前では、テーブルは常に特別なASCII形式であり、xrefキーワードでマークされ、間接オブジェクトで構成される本体の後に続きます。バージョン1.5では、オプションの相互参照ストリームが導入されました。これは標準ストリームオブジェクトの形式を持ち、フィルターが適用されている可能性があります。このようなストリームは、ASCII相互参照テーブルの代わりに使用でき、オフセットなどの情報がバイナリ形式で含まれています。この形式は、整数幅の指定(/W配列を使用)が可能である点で柔軟性があり、たとえば、サイズが64 KiBを超えないドキュメントでは、オブジェクトのオフセットに2バイトのみを割り当てることができます。下位互換性を確保するために、ハイブリッド参照PDFファイルには従来の相互参照テーブルと相互参照ストリームの両方が含まれる場合があり、これにより、古いPDFプロセッサでもファイルを読み取ることができ、バージョン1.5で導入された新機能も活用できるようになります。[27]
PDFファイルの最後にはフッターがあり、そこには
startxrefの後に、相互参照テーブルの開始位置(xrefキーワードから始まる)または相互参照ストリームオブジェクトのオフセットが続き、その後に%%EOF ファイル終了マーカー。相互参照ストリームが使用されていない場合、フッターの前にtrailerキーワードが付き、その後に相互参照ストリーム オブジェクトの辞書に含まれる情報を含む辞書が続きます。
/Rootとも呼ばれます)/Size)各ページには、ページに描画されるテキスト、ベクター、画像を記述する1つまたは複数のコンテンツストリームがあります。コンテンツストリームは、PostScriptに似たスタックベースです。[28]

PDFファイルには、非線形化(「最適化」されていない)と線形化(「最適化」された)の2つのレイアウトがあります。非線形化PDFファイルは線形PDFファイルよりもサイズが小さくなりますが、文書のページを組み立てるために必要なデータの一部がPDFファイル全体に散在しているため、アクセスが遅くなります。線形化PDFファイル(「最適化」または「Web最適化」PDFファイルとも呼ばれる)は、最初のページの表示に必要なすべてのオブジェクトがファイルの先頭に最適に配置されているため、ファイル全体のダウンロードを待たずにWebブラウザのプラグインで読み取ることができるように構築されています。[29] PDFファイルは、 Adobe AcrobatソフトウェアまたはQPDFを使用して最適化できます。
ページサイズはフォーマット自体によって制限されるものではありません。ただし、Adobe Acrobatでは1500万×1500万インチ、つまり225,000,000,000,000平方インチ(145,161 km 2 ; 56,047平方マイル)に制限されており、これはタジキスタンの面積よりわずかに大きいです。[2] : 1129
PDF でグラフィックを表現する基本的な設計は、PDF 1.4 で追加された透明度の使用を除いて、PostScript のものと非常に似ています。
PDF グラフィックスは、デバイスに依存しない 直交座標系を使用してページの表面を記述します。PDF のページ記述では、マトリックスを使用してグラフィック要素を拡大縮小、回転、または傾斜させることができます。PDF の重要な概念はグラフィックス状態です。グラフィックス状態とは、ページ記述によって変更、保存、および復元できるグラフィックパラメータの集合です。PDF には(バージョン 2.0 時点で)25 個のグラフィックス状態プロパティがあり、その中で最も重要なものは次のとおりです。
PostScript と同様、PDF のベクター グラフィックはパスで構成されます。パスは通常、直線と 3 次ベジェ曲線で構成されますが、テキストのアウトラインから構築することもできます。PostScript とは異なり、PDF では単一のパスでテキストのアウトラインと直線および曲線を混在させることはできません。パスは、ストローク、塗りつぶし、塗りつぶしてからストローク、またはクリッピングに使用できます。ストロークと塗りつぶしには、パターン を含め、グラフィック状態で設定された任意の色を使用できます。PDF はいくつかの種類のパターンをサポートしています。最も単純なのは、アートワークを繰り返し描画するように指定するタイリング パターンです。これは、パターン オブジェクトで色を指定したカラー タイリング パターン、またはパターンを描画するまで色の指定を延期する無色のタイリング パターンのいずれかです。PDF 1.3 からは、連続的に変化する色を描画するシェーディング パターンも提供されています。シェーディング パターンには 7 つのタイプがあり、その中で最も単純なのは軸方向シェーディング(タイプ 2) と放射状シェーディング(タイプ 3) です。
PDF内のラスター画像(Image XObjectsと呼ばれる)は、関連付けられたストリームを持つ辞書によって表現されます。辞書は画像のプロパティを記述し、ストリームは画像データを含みます。(あまり一般的ではありませんが、小さなラスター画像は、インライン画像としてページ記述に直接埋め込まれることがあります。)画像は通常、圧縮のためにフィルタリングされます。PDFでサポートされている画像フィルタには、以下の汎用フィルタが含まれます。
通常、PDF内のすべての画像コンテンツはファイルに埋め込まれます。しかし、PDFでは外部ストリームまたは代替画像を使用することで、画像データを外部ファイルに保存できます。PDF /AやPDF/Xなどの標準化されたPDFサブセットでは、これらの機能は禁止されています。
PDF内のテキストは、ページコンテンツストリーム内のテキスト要素によって表現されます。テキスト要素は、文字を特定の位置に配置することを指定します。文字は、選択されたフォントリソースのエンコーディングを使用して指定されます。
PDF のフォントオブジェクトは、デジタル書体の記述です。書体の特性を記述する場合と、埋め込みフォントファイルを含む場合があります。後者は埋め込みフォントと呼ばれ、前者は非埋め込みフォントと呼ばれます。埋め込まれるフォントファイルは、広く使用されている標準デジタルフォント形式であるType 1(およびその圧縮版 CFF)、TrueType、そして(PDF 1.6 以降)OpenTypeに基づいています。さらに PDF は、フォントのコンポーネントが PDF グラフィック演算子によって記述される Type 3 バリアントをサポートしています。
標準14フォントまたはベース14フォントとして知られる14種類の書体[30]は、PDF文書において特別な意味を持っています。
これらのフォント、または同じメトリックを持つ適切な代替フォントは、ほとんどのPDFリーダーで使用できるはずですが、リーダーで使用できることは保証されておらず、システムにインストールされている場合にのみ正しく表示される可能性があります。[31]フォントは、PDFに埋め込まれていない場合は代替される可能性があります。
テキスト文字列内では、文字は、エンコーディングを使用して現在のフォントのグリフにマップされる文字コード(整数) を使用して表示されます。 WinAnsi、MacRoman 、および東アジア言語用の多くのエンコーディングなど、いくつかの定義済みエンコーディングがあり、フォントには独自の組み込みエンコーディングがある場合があります。 (WinAnsi エンコーディングと MacRoman エンコーディングはWindowsおよびMacintoshオペレーティングシステムの従来の特性から派生していますが、これらのエンコーディングを使用するフォントはどのプラットフォームでも同じように動作します。) PDF では、使用する定義済みエンコーディング、フォントの組み込みエンコーディングを指定したり、定義済みまたは組み込みエンコーディングとの差異の参照テーブルを提供したりできます (TrueType フォントでは推奨されません)。[2] PDF のエンコーディングメカニズムは Type 1 フォント用に設計されているため、TrueType フォントに適用するルールは複雑です。
大きなフォントや非標準のグリフを持つフォントでは、Identity-H(横書き用)およびIdentity-V (縦書き用)という特殊なエンコーディングが使用されます。このようなフォントでは、文字の意味情報を保持するためには ToUnicodeテーブルを提供する必要があります。
光学式文字認識(OCR)によってテキストが認識されずに PDF にスキャンされたテキスト ドキュメントは、フォントやテキスト プロパティのない画像です。
PDF のオリジナルのイメージングモデルは不透明で、 PostScript と同様に、ページ上に描画される各オブジェクトは、同じ場所に以前描画されたオブジェクトを完全に置き換えます。PDF 1.4 では、イメージングモデルが拡張され、透明化が可能になりました。透明化を使用すると、新しいオブジェクトは以前描画されたオブジェクトと相互作用し、ブレンド効果を生み出します。PDF への透明化は、PDF 1.3 以前の仕様に基づいて作成された製品では無視されるように設計された新しい拡張機能によって行われました。その結果、少量の透明化を使用したファイルは古いビューアでも問題なく表示される可能性がありますが、多用された透明化を使用したファイルは、古いビューアでは正しく表示されない可能性があります。
透明度拡張機能は、透明グループ、ブレンドモード、シェイプ、アルファといった主要概念に基づいています。このモデルはAdobe Illustratorバージョン9の機能と密接に連携しています。ブレンドモードは、当時のAdobe Photoshopで使用されていたものに基づいています。PDF 1.4仕様が公開された当時、ブレンドモードの計算式はAdobeによって秘密にされていましたが、その後公開されました。[32]
PDF仕様における透明グループの概念は、Adobe Illustratorなどのアプリケーションにおける既存の「グループ」や「レイヤー」の概念とは独立しています。これらのグループは、オブジェクト間の論理的な関係を反映しており、編集時に意味を持ちますが、画像モデルの一部ではありません。
タグ付きPDF(ISO 32000の14.8項参照)には、信頼性の高いテキスト抽出とアクセシビリティを可能にするための文書構造とセマンティクス情報が含まれています。[33]技術的に言えば、タグ付きPDFは、PDF 1.3で導入された論理構造フレームワークに基づいたフォーマットを様式化したものです。タグ付きPDFは、ページコンテンツ(テキスト、グラフィック、画像)を抽出して他の目的で再利用できるようにする標準的な構造タイプと属性のセットを定義します。[34]
PDFファイルが印刷のみを目的としている場合、タグ付きPDFは必須ではありません。この機能はオプションであり、ISO 32000-1ではタグ付きPDFのルールが比較的曖昧であったため、2021年現在、支援技術(AT)を含む利用デバイスにおけるタグ付きPDFのサポートは不均一です。 [35]しかし、ISO 32000-2ではタグ付きPDFに関する議論が改善されており、今後の普及が期待されます。
アクセシビリティに特化した PDF の ISO 標準化サブセットであるPDF/UAは、2012 年に初めて公開されました。
PDFバージョン1.5(2003年)の導入により、「レイヤー」の概念が導入されました。レイヤー(正式にはオプションコンテンツグループ(OCG))は、PDF文書内のコンテンツの一部を指し、文書作成者または閲覧者が選択的に表示または非表示にすることができます。この機能は、CAD図面、レイヤー化されたアートワーク、地図、多言語文書などで役立ちます。
基本的に、これはドキュメントルートに追加されたオプションコンテンツプロパティ辞書で構成されます。この辞書には、オプションコンテンツグループ(OCG)の配列が含まれます。各OCGは一連の情報を記述し、個別に表示または非表示にすることができます。さらに、指定されたOCGのステータス(表示または非表示)を示すオプションコンテンツ設定辞書のセットも含まれます。
PDFファイルはセキュリティのために暗号化されることがあります。その場合、コンテンツの表示や編集にはパスワードが必要です。PDF 2.0では、256ビットAES暗号化がPDF 2.0ファイルの標準として定義されています。PDFリファレンスでは、サードパーティが独自のPDF暗号化システムを定義する方法も定義されています。
PDF ファイルは、安全な認証を提供するためにデジタル署名される場合があります。PDF でのデジタル署名の実装に関する詳細は、ISO 32000-2 に記載されています。
PDFファイルには、コピー、編集、印刷などをさらに制限するDRM制限が埋め込まれている場合があります。これらの制限は、リーダーソフトウェアがそれに従うかどうかに依存するため、提供されるセキュリティは限られています。
PDF が提供する標準的なセキュリティは、2 つの異なる方法と 2 つの異なるパスワードで構成されています。ユーザー パスワードはファイルを暗号化して開けないようにし、所有者パスワードは文書が復号化された後でも制限する必要がある操作を指定します。制限される操作には、文書のテキストとグラフィックの変更、印刷、コピー、またはテキスト ノートと AcroForm フィールドの追加または変更が含まれます。ユーザー パスワードはファイルを暗号化しますが、所有者パスワードはファイルを暗号化せず、クライアント ソフトウェアがこれらの制限を尊重することに依存します。所有者パスワードは、一部の無料オンライン サービスなどのソフトウェアによって簡単に削除できます。[36]そのため、文書作成者が PDF 文書に課す使用制限は安全ではなく、ファイルが配布された後は保証されません。この警告は、Adobe Acrobat ソフトウェアを使用して PDF ファイルを作成または編集してこのような制限を適用する場合に表示されます。
パスワードを解除しなくても、ほとんどのフリーウェアやオープンソースのPDFリーダーは権限による「保護」を無視し、文書がパスワード保護されていないかのように、ユーザーがテキストの抜粋を印刷したりコピーしたりすることを許可します。[37] [38] [39]
PDF 1.5以降、使用権(UR)署名は、特定のPDFビューアアプリケーションでデフォルトで利用できない追加のインタラクティブ機能を有効にするために使用されます。この署名は、権限が正当な権限付与機関によって付与されたことを検証するために使用されます。例えば、ユーザーに以下の権限を与えるために使用できます。[40]
例えば、Adobe Systemsは、公開鍵暗号を用いてAdobe Readerに追加機能を有効にする権限を付与しています。Adobe Readerは、署名にAdobe認定の証明機関が発行した証明書が使用されているかどうかを検証します。あらゆるPDFアプリケーションは、この同じメカニズムを独自の目的で使用できます。[40]
受信者のシステムがパッチを適用されていない場合など特定の状況下では、デジタル署名された文書の受信者が見る情報は、署名者が文書に署名した後でも送信者によって操作される可能性があります。[41]
PAdES(PDF Advanced Electronic Signatures )は、PDFとISO 32000-1 [42]に対する一連の制限と拡張であり、高度な電子署名に適しています。これはETSIによってTS 102 778として公開されています。[43]
PDFファイルには添付ファイルがあり、プロセッサがアクセスして開いたり、ローカルファイルシステムに保存したりすることができます。[44]
PDFファイルには2種類のメタデータを含めることができます。[2] 1つ目は文書情報辞書(Document Information Dictionary)で、作成者、タイトル、件名、作成日、更新日などのキー/値フィールドのセットです。これはオプションであり、Infoファイルのトレーラー内のキーから参照されます。少数のフィールドが定義されており、必要に応じて追加のテキスト値で拡張できます。この方法はPDF 2.0では非推奨です。
PDF 1.4では、メタデータストリームのサポートが追加されました。XMP ( Extensible Metadata Platform)を使用することで、他のファイル形式と同様にXML標準ベースの拡張可能なメタデータを追加できます。PDF 2.0では、拡張可能なスキーマを使用して、埋め込まれたイラスト、フォント、画像に関する情報など、ドキュメント内の任意のオブジェクトにメタデータを添付できるだけでなく、ドキュメント全体(ドキュメントカタログに添付)にもメタデータを添付できます。
PDF文書には、ビューア設定オブジェクトにページの表示レイアウトやズームレベルなどの表示設定が含まれている場合があります。Adobe Readerはこれらの設定を使用して、文書を開く際にユーザーのデフォルト設定を上書きします。[45]無料のAdobe Readerではこれらの設定を削除できません。
PDFファイルは、障害のある人がアクセスしやすいように特別に作成できます。[46] [47] [48] [49] [50] 2014年現在使用されているPDFファイル形式に[アップデート]は、タグ、テキスト同等物、キャプション、音声説明などを含めることができます。一部のソフトウェアはタグ付きPDFを自動的に作成できますが、この機能はデフォルトで常に有効になっているわけではありません。[51] [52] JAWS、Window-Eyes、Hal、Kurzweil 1000および3000などの主要なスクリーンリーダーは、タグ付きPDFを読み取ることができます。[53] [54]さらに、タグ付きPDFは、視覚障害のある読者のために、再フロー化および拡大できます。 古いPDFやスキャンした文書から生成されたPDFにタグを追加することは、いくつかの課題をもたらす可能性があります。
PDF アクセシビリティにおける大きな課題の 1 つは、PDF 文書に 3 つの異なるビューがあり、文書の作成方法によっては、これらのビューが互いに矛盾する可能性があることです。3 つのビューとは、(i) 物理ビュー、(ii) タグビュー、(iii) コンテンツビューです。物理ビューは表示および印刷されます(ほとんどの人が PDF 文書と考えるもの)。タグビューは、スクリーンリーダーやその他の支援技術が、障害のあるユーザーに高品質なナビゲーションと読み取りエクスペリエンスを提供するために使用します。コンテンツビューは、PDF のコンテンツストリーム内のオブジェクトの物理的な順序に基づいており、Adobe Reader のリフロー機能など、タグビューを完全にサポートしていないソフトウェアでも表示される場合があります。
ISO 32000-1に基づくアクセシブルPDFの国際標準であるPDF/UAは、2012年にISO 14289-1として初めて発行され、アクセシブルPDF技術の規範言語を確立しています。PDF/UAはPDF形式に対応しており、WCAG 2.0の考え方を取り入れてPDF固有のアクセシビリティルールを確立しています。[55]
リッチメディアPDFは、ファイル内に埋め込みまたはリンクできるインタラクティブコンテンツを含むPDFファイルです。画像、音声、動画コンテンツ、ボタンなどを含めることができます。例えば、インタラクティブPDFがeコマースビジネスのデジタルカタログである場合、PDFページに商品リストを追加し、画像やウェブサイトへのリンク、そしてドキュメントから直接注文できるボタンなどを追加できます。
インタラクティブフォームは、PDFファイル形式にフォームを追加するメカニズムです。PDFは現在、データとPDFフォームを統合するための2つの異なる方法をサポートしています。現在、両方の形式はPDF仕様に共存しています。[40] [56] [57] [58]
AcroFormsはPDF 1.2形式で導入されました。AcroFormsでは、オブジェクト(例:テキストボックス、ラジオボタンなど) とコード(例:JavaScript)を使用できます。標準的なPDFアクションタイプに加え、インタラクティブフォーム(AcroForms)はデータの送信、リセット、インポートをサポートしています。「送信」アクションは、選択されたインタラクティブフォームフィールドの名前と値を指定されたURL(Uniform Resource Locator)に送信します。インタラクティブフォームフィールドの名前と値は、以下のいずれかの形式で送信できます(アクションのExportFormat、SubmitPDF、XFDFフラグの設定によって異なります)。[40]
PDF 1.4 で定義されているように、個々のフィールドや値ではなく、ドキュメント全体を送信できます。
AcroFormsは、フォームフィールドの値をキーと値のペアを含む外部スタンドアロンファイルに保存できます。外部ファイルは、フォームデータフォーマット(FDF)およびXMLフォームデータフォーマット(XFDF)ファイルを使用できます。[62] [60] [63]使用権限(UR)署名は、FDF、XFDF、およびテキスト( CSV / TSV )形式のフォームデータファイルのインポート、およびFDFおよびXFDF形式のフォームデータファイルのエクスポートに関する権限を定義します。[40]
PDF 1.5では、Adobe Systemsはフォーム用の独自フォーマットであるAdobe XML Forms Architecture(XFA)を導入しました。Adobe XFA FormsはISO 32000のAcroForms機能と互換性がなく、ほとんどのPDFプロセッサはXFAコンテンツを処理できません。XFA仕様はISO 32000-1/PDF 1.7から外部独自仕様として参照されており、ISO 32000-2(PDF 2.0)ではPDFから完全に廃止されました。
誰でもAdobe Systemsにロイヤリティを支払うことなくPDFファイルを読み書きできるアプリケーションを作成できます。AdobeはPDFの特許を保有していますが、PDF仕様に準拠したソフトウェアの開発においてロイヤリティフリーで使用できるライセンスを供与しています。[64]
2019年11月、ボーフムのルール大学とHackmanit GmbHの研究者らは、デジタル署名されたPDFに対する攻撃を公開した。[65]彼らは、実装上の欠陥を悪用することで、22種類のデスクトップPDFビューアのうち21種類と、8種類のオンライン検証サービスのうち6種類で署名を無効にすることなく、署名付きPDFの表示コンテンツを変更する方法を示した。同会議で、彼らはさらに、PDF内の暗号化されたコンテンツの平文を盗み出す方法も示した。[66] 2021年には、仕様で提供されている機能の柔軟性を悪用する、PDFに対する新たな、いわゆるシャドウ攻撃を示した。 [67]サービス拒否、情報漏洩、データ操作、任意コード実行攻撃に関するPDFのセキュリティ問題の概要が、Jens Müllerによって発表された。[68] [69]
一部の一般的なPDFリーダーには、ウイルス、トロイの木馬、その他のマルウェアに感染したPDFファイルによって被害を及ぼす可能性のあるセキュリティ上の脆弱性が存在します。このようなPDFファイルには、PDFリーダーの脆弱性を悪用する可能性のあるJavaScriptコードが隠されていたり、ファイルを開いた際に隠しオブジェクトが実行されたりする可能性があります。また、頻度は低いものの、悪意のあるPDFファイルによってマルウェアが起動される可能性もあります。[70]
ウイルスを含んだPDF添付ファイルは2001年に初めて発見されました。OUTLOOK.PDFWormまたはPeachyと呼ばれるこのウイルスは、Microsoft Outlookを利用して、自身をAdobe PDFファイルとして添付して送信します。Adobe Acrobatでは起動しますが、Acrobat Readerでは起動しません。[71]
長年にわたり、Adobe Readerの様々なバージョンに複数の脆弱性が発見され[72]、同社はセキュリティ修正プログラムをリリースしました。他のPDFリーダーにも脆弱性が発見されています。厄介な要因の一つは、WebページにPDFファイルが埋め込まれている場合、PDFリーダーが自動的に起動するように設定できるため、攻撃の経路となる可能性があることです。悪意のあるWebページに、PDFリーダーの脆弱性を悪用した感染したPDFファイルが含まれている場合、ブラウザが安全であってもシステムが侵害される可能性があります。これらの脆弱性の一部は、PDFリーダーがPDFファイルに埋め込まれたJavaScriptを適切に処理できないために発生します。PDFリーダーでJavaScriptの実行を無効にすると、将来的な脆弱性の悪用を軽減できますが、PDF表示ソフトウェアの他の部分における脆弱性の悪用からは保護されません。一部のセキュリティ専門家は、JavaScriptはPDFリーダーにとって必須ではなく、JavaScriptを無効にすることで得られるセキュリティ上の利点は、発生する互換性の問題を上回ると述べています[73] 。PDFファイルの脆弱性の悪用を回避する方法の一つは、ローカルサービスまたはWebサービスを使用して、ファイルを表示する前に別の形式に変換することです。
2010年3月30日、セキュリティ研究者のディディエ・スティーブンスは、ユーザーが起動を許可した場合に悪意のある実行ファイルが実行されるAdobe ReaderとFoxit Readerの脆弱性を報告しました。[74]
PDFストリームにはネストされたフィルタが存在するため、5キロバイトのファイルをRAM上で展開すると1ペタバイトになるような脆弱性が存在します。pypdfのCVE-2025-55197の場合のように、この脆弱性に対する対策を講じていない実装では、 サービス拒否攻撃を引き起こす可能性があります。 [75] [76]
多くのPDFビューアは、様々なソースから無料で提供されています。PDFファイルを操作・編集するためのプログラムも入手可能ですが、通常は有料です。さらに、Chrome、Firefox、Safariなどの最新のウェブブラウザのほとんどにはPDF表示機能が搭載されており、以前はPDF表示のために作成されたブラウザプラグインに代わる機能となっています。[77]
PDFを作成するためのソフトウェアオプションは多数あり、macOS、iOS、[78]およびほとんどのLinuxディストリビューションに組み込まれているPDF印刷機能もその1つです。LibreOffice 、Microsoft Office 2007 ( SP2にアップデートした場合)以降、[79] WordPerfect 9、Scribusなど多くの文書処理ソフトウェアは、文書をPDFでエクスポートできます。Microsoft Windows、pdfTeXタイプセッティングシステム、DocBook PDFツール、GhostscriptとAdobe Acrobat自体を中心に開発されたアプリケーション、 Adobe InDesign、Adobe FrameMaker、Adobe Illustrator、Adobe Photoshop用のPDFプリンタドライバは数多くあり、「PDFプリンタ」を設定できるようになっています。これを選択すると、物理的なプリンタではなくPDFファイルに出力が送信されます。GoogleのオンラインオフィススイートGoogle Docsでは、PDFへのアップロードと保存が可能です。一部のウェブアプリでは、無料のPDF編集および注釈ツールを提供しています。
フリーソフトウェア財団は、その高優先度プロジェクトの一つとして、「PDFファイル形式と関連技術をISO 32000規格に実装した、高品質で完全に機能するライブラリとプログラムの無料セットを開発している」としている。[80] [81]しかし、2011年に、GNU PDFプロジェクトは、 Popplerライブラリ[82]の成熟により、「高優先度プロジェクト」のリストから削除された。Popplerは、GNOMEデスクトップ環境のEvinceなどのアプリケーションで広く使用されている。PopplerはXpdf [83] [84]のコードベースに基づいている。PDFソフトウェア一覧に記載されているように、商用開発ライブラリも利用可能である。
Apacheソフトウェア財団のApache PDFBoxプロジェクトは、PDF文書を扱うためのApacheライセンスの下でライセンスされたオープンソースのJavaライブラリです。 [85]
ラスターイメージプロセッサ(RIP)は、PDFファイルをラスター形式に変換し、プリンタ、デジタル印刷機、プリプレスで紙やその他のメディアに画像化するのに適した形式に変換するために使用されます。このプロセスはラスター化と呼ばれます。PDFを直接処理できるRIPには、Adobe SystemsのAdobe PDF Print Engine [86]、Jaws [87] 、 Global GraphicsのHarlequin RIPなどがあります。
1993年、Global Graphics社のJawsラスターイメージプロセッサは、PDFを他のフォーマットに変換することなくネイティブに解釈できる初のプリプレスRIPとなりました。同社は1997年に、同様の機能を備えたHarlequin RIPのアップグレード版をリリースしました。[88]
Agfa-Gevaert は、1997 年に PDF をベースにした最初のプリプレス ワークフロー システムである Apogee を発表し、出荷しました。
多くの商業オフセット印刷会社は、印刷ソースとして印刷可能なPDFファイル、具体的にはPDF/X-1aサブセットおよびそのバリエーションの提出を受け入れています。[89]印刷可能なPDFファイルの提出は、収集されたネイティブ作業ファイルを受け取るという問題のある必要性を代替するものです。
2006年、 Open Source Development Labs Printing Summitにおいて、PDFは標準的な印刷ジョブ形式として広く受け入れられました。PDFはCommon Unix Printing Systemでも印刷ジョブ形式としてサポートされており、 GNOME、 KDE、Firefox、Thunderbird、LibreOffice、OpenOfficeなどのデスクトップアプリケーションプロジェクトもPDFでの印刷ジョブ出力に切り替えています。[90]
一部のデスクトップ プリンターは直接 PDF 印刷もサポートしており、外部からの支援なしに PDF データを解釈できます。
PDFはmacOS(当初はMac OS Xと呼ばれていた)の「ネイティブ」メタファイル形式として選ばれ、以前のクラシックMac OSのPICT形式に取って代わりました。Quartzグラフィックレイヤーのイメージングモデルは、Display PostScriptとPDFに共通するモデルに基づいているため、Display PDFというニックネームが付けられています。プレビューアプリケーションはPDFファイルを表示でき、 Safariウェブブラウザのバージョン2.0以降も同様です。 [91] [92]システムレベルのPDFサポートにより、macOSアプリケーションはOS標準の印刷アーキテクチャをサポートしていれば、自動的にPDF文書を作成できます。ファイルはファイルヘッダーに従ってPDF 1.3形式でエクスポートされます。Mac OS Xバージョン10.0から10.3でスクリーンショットを撮ると、画像もPDFとしてキャプチャされました。それ以降のバージョンではスクリーンキャプチャがPNGファイルとして保存されますが、この動作は必要に応じてPDFに戻すことができます。
Adobe Acrobat は、ユーザーが既に作成された PDF ファイルに注釈、ハイライト、およびメモを追加できるプロプライエタリソフトウェアの一例です。フリーソフトウェアとして( GNU General Public Licenseの下で)利用できる UNIX アプリケーションとしては、 PDFeditがあります。フリーウェアのFoxit Reader は、Microsoft Windows、macOS、Linux で利用でき、文書に注釈を付けることができます。 Tracker Software のPDF-XChange Viewer では、フリーウェア版で注釈やマークアップを制限なく使用できます。Appleの macOS に統合されている PDF ビューアである Preview やオープンソースソフトウェアのSkimでも注釈が可能です。Skim は、 LaTeX、SyncTeX、PDFSyncとの連携、およびBibDesk文献管理ソフトウェアとの統合をサポートしています。フリーウェアのQiqqa では、PDF ライブラリ全体で作成したすべての注釈とメモをまとめた注釈レポートを作成できます。Text Verification Tool では、文書の差異を注釈とマークアップとしてエクスポートします。
PDFやその他の文書形式での注釈をサポートするWeb注釈システムもあります。PDFに紙文書と同等の機能をすべて備えたい場合、インク注釈が必要になります。
PDFは、異なるソフトウェアおよびハードウェアプラットフォーム間で文書の外観を維持することに重点を置いているため、PDF文書を他のファイル形式に変換したり、テキスト、画像、表、書誌情報、文書メタデータなどの情報を抽出したりする上で課題が生じます。これらのタスクをサポートするツールやソースコードライブラリは数多く存在します。PDF変換および情報抽出ツールをテストするためのラベル付きデータセットがいくつか存在し、ツールの性能のベンチマーク評価に使用されています。[93]
Open XML Paper Specification は、ページ記述言語として、またWindows Vista以降の Microsoft Windows のネイティブ プリント スプーラ形式として使用されている競合形式です。
Mixed Object: Document Content Architectureは競合フォーマットです。MO:DCA-PはAdvanced Function Presentationの一部です。
例:文書形式に関するISO/IEC 29500、ISO/IEC 26300、ISO 32000は、すべての関係者がアクセスできない情報を参照しています(独自の技術やブランド名への参照、不完全な適用範囲、またはリンク切れ)。
はまだISO規格化されていません。委員会はAdobe Systemsに対し、XFA仕様であるXMLフォームアーキテクチャ(XFA)をISOに提出し、標準化するよう求めています。委員会はXFA仕様の安定性を懸念しています。パート2ではXFA 3.1を参照します。
U3D標準の実装は不完全であり、独自の拡張機能が使用されました。
はxpdf-3.0コードベースをベースにしたPDFレンダリングライブラリです。
はGNU General Public License (GPL) バージョン2または3に基づいてライセンスされています。
デジタルファイルまたはPDFから直接グラフィックプロジェクトを商業印刷することにご興味のある方向け。