ポータブル ドキュメント フォーマット( PDF ) は、 ISO 32000として標準化されたファイル フォーマットで、 1993 年にAdobeによって開発され、アプリケーション ソフトウェア、ハードウェア、およびオペレーティングシステムに依存しない方法で、テキスト フォーマットや画像を含むドキュメントを表示するために使用されます。[ 2 ] [ 3 ] PostScript言語に基づくPDF ファイルは、テキスト、フォント、ベクター グラフィックス、ラスター 画像、および表示に必要なその他の情報を含む、固定レイアウト ドキュメントの完全な記述をカプセル化します。
PDF は、 1991 年にAdobe の共同創設者であるジョン・ワーノックによって開始された「キャメロット プロジェクト」にルーツがあります。[ 4 ] PDF は 2008 年に ISO 32000 として標準化されました。 [ 5 ]これは、 PDF アソシエーションが委員会マネージャーを務めるISO TC 171 SC 2 WG8 によって維持されています。 [ 6 ]最新版の ISO 32000-2:2020 は 2020 年 12 月に発行されました。[ 7 ]
PDFファイルには、平面テキストやグラフィック以外にも、論理構造要素、注釈やフォームフィールドなどのインタラクティブ要素、レイヤー、リッチメディア(ビデオコンテンツを含む)、 U3DやPRCを使用した3次元オブジェクト、その他さまざまなデータ形式など、多様なコンテンツを含めることができます。また、PDF仕様では、暗号化、デジタル署名、ファイル添付、メタデータにも対応しており、これらの機能を必要とするワークフローに対応できます。
PDF の開発は 1991 年にジョン・ワーノックが当時キャメロットというコードネームで呼ばれていたプロジェクトのために論文を書いたことから始まった。その論文の中で彼は、Interchange PostScript (IPS) と呼ばれる PostScript の簡略版の作成を提案した。[ 8 ]印刷ジョブを出力デバイスにレンダリングすることに特化した従来の PostScript とは異なり、IPS はあらゆる画面とあらゆるプラットフォームにページを表示することに最適化される予定だった。[ 8 ]
Adobeは1993年にPDF仕様を無償で公開した。[ 9 ]初期の頃、PDFは主にデスクトップパブリッシングのワークフローで人気があり、 DjVu、Envoy、Common Ground Digital Paper、Farallon Replica、さらにはAdobe独自のPostScriptフォーマットなど、他のいくつかのフォーマットと競合していた。
PDFは、2008年7月1日にオープンスタンダードとしてリリースされ、国際標準化機構によってISO 32000-1:2008として発行されるまで、Adobeが管理する独自のフォーマットでした。 [ 10 ] [ 11 ]この時点で、仕様の管理は、ボランティアの業界専門家からなるISO委員会に移管されました。2008年、AdobeはISO 32000-1の公開特許ライセンスを公開し、PDF準拠の実装を作成、使用、販売、配布するために必要なAdobeが所有するすべての特許に対するロイヤリティフリーの権利を付与しました。[ 12 ]
ISO 32000-1 となった PDF 仕様の第 6 版である PDF 1.7 には、Adobe XML Forms Architecture (XFA) やAcrobat 用のJavaScript拡張機能など、Adobe が定義した独自の技術がいくつか含まれており、これらは ISO 32000-1 仕様の完全な実装に規範的かつ不可欠なものとして ISO 32000-1 で参照されています。[ 13 ]これらの独自の技術は標準化されておらず、その仕様は Adobe の Web サイトでのみ公開されています。[ 14 ] [ 15 ] [ 16 ]これらの多くは、サードパーティの PDF 実装ではサポートされていません。
ISO は 2017 年に PDF のバージョン 2.0、ISO 32000-2 を公開し、Adobe が提供する仕様を置き換えました。[ 17 ] 2020 年 12 月に PDF 2.0 の第 2 版、ISO 32000-2:2020 が公開され、規範的参照の明確化、修正、重要な更新が行われました。 [ 18 ] ISO 32000-2 には、規範的参照として独自の技術は含まれていません。[ 19 ] 2023 年 4 月に PDF Association は ISO 32000-2 を無料でダウンロードできるようにしました。[ 17 ]
PDFファイルは、多くの場合、ベクターグラフィック、テキスト、ビットマップグラフィックの組み合わせで構成されています。PDFに含まれる基本的なコンテンツの種類は以下のとおりです。
後のPDF改訂版では、PDF文書はリンク(文書内またはWebページ内)、フォーム、JavaScript(当初はAcrobat 3.0のプラグインとして提供)、またはプラグインを使用して処理できるその他のあらゆる種類の埋め込みコンテンツもサポートできるようになりました。
PDFは3つの技術を組み合わせています。
PostScriptは、画像を生成するためにインタプリタで実行されるページ記述言語です。 [ 8 ]グラフィックスを扱うことができ、分岐やループなどのプログラミング言語の標準的な機能を備えています。[ 8 ] PDFはPostScriptのサブセットであり、特定の制御フロー機能を削除するように簡略化されていますが、グラフィックスコマンドは残っています。[ 8 ]
PostScript は元々、全く異なる用途を想定して設計されました。それは、PostScript インタープリタがコマンドに遭遇するまで一連のコマンドを収集しshowpage、その後すべてのコマンドを実行してページをラスター画像として印刷デバイスにレンダリングする、一方向の線形印刷ジョブの送信です。[ 20 ] PostScript は、電子文書をコンピュータのモニターに長期保存したりリアルタイムで対話的にレンダリングしたりすることを想定していなかったため、ページの連続レンダリング以外の機能をサポートする必要はありませんでした。[ 20 ]最終的な印刷出力にエラーがある場合は、ユーザーがアプリケーションレベルでそれを修正し、まったく新しい PostScript ファイルの形式で新しい印刷ジョブを送信します。したがって、PostScript ファイル内の任意のページは、それまでのすべてのページを描画するためのすべての先行コマンドの実行の累積結果としてのみ正確にレンダリングできます。これらのコマンドは、後続のページと特定のページを描画するコマンドに影響を与える可能性があり、このプロセスを回避して別のページにスキップする簡単な方法はありませんでした。[ 20 ]
従来、PostScript から PDF に変換するには、ソース PostScript ファイル (つまり、実行可能プログラム) を基に PostScript のような PDF コードを生成します ( Adobe Distillerなど)。これは、ループ展開、インライン化、未使用の分岐の削除などの標準的なコンパイラ技術を適用することで行われ、結果として純粋に宣言的で静的なコードが生成されます。[ 20 ]結果は、正しいレンダリングに必要なすべての依存関係 (ドキュメントが参照する外部ファイル、グラフィック、またはフォント) とともにコンテナ形式にパッケージ化され、圧縮されます。
文書フォーマットとして、PDFはPostScriptに比べていくつかの利点がある。
その欠点は以下のとおりです。
PDFはv1.6以降、インタラクティブな3Dドキュメントの埋め込みをサポートしています。3D図面はU3DやPRC、その他さまざまなデータ形式を使用して埋め込むことができます。 [ 24 ] [ 25 ] [ 26 ]
PDFファイルは、バイナリコンテンツを持つ可能性のある特定の要素を除いて、 ASCII文字を使用して構成されています。[ 27 ]
ファイルは、マジックナンバー(読み取り可能な文字列として)とフォーマットのバージョンを含むヘッダーで始まります。たとえば、 です%PDF-1.7。このフォーマットは、COS(「カルーセル」オブジェクト構造)フォーマットのサブセットです。[ 28 ] COSツリーファイルは主にオブジェクトで構成され、オブジェクトには9つのタイプがあります。[ 19 ]
(...)) で囲むか、単一の山括弧 ( ) で囲んで 16 進数で表します。文字列には 8 ビット文字を含めることができます。<...>/)で始まる[...])で囲まれたオブジェクトの順序付きコレクションのことです。<<...>>streamとendstreamキーワードで囲まれたものです。パーセント記号(%)を接頭辞として付けた8ビット文字を使用したコメントを挿入できます。
オブジェクトは、直接オブジェクト(別のオブジェクトに埋め込まれている) または間接オブジェクトのいずれかになります。間接オブジェクトは、オブジェクト番号と世代番号で番号付けされ、ドキュメント ルートにある場合は、キーワードobjとendobjキーワードの間に定義されます。PDF バージョン 1.5 以降、間接オブジェクト (他のストリームを除く) は、オブジェクト ストリーム(でマーク/Type /ObjStm) と呼ばれる特別なストリームにも配置できます。この手法により、ストリーム以外のオブジェクトに標準のストリーム フィルタを適用でき、多数の小さな間接オブジェクトを含むファイルのサイズが小さくなり、特にタグ付き PDFに役立ちます。オブジェクト ストリームでは、オブジェクトの世代番号(0 以外) を指定することはできません。
インデックス テーブル (相互参照テーブルとも呼ばれる) はファイルの末尾付近にあり、ファイルの先頭から各間接オブジェクトのバイト オフセットを示します。[ 29 ]この設計により、ファイル内のオブジェクトへの効率的なランダム アクセスが可能になり、ファイル全体を書き換えることなく小さな変更 (増分更新)を行うことも可能になります。PDF バージョン 1.5 より前は、テーブルは常に特別な ASCII 形式であり、xrefキーワードでマークされ、間接オブジェクトで構成されるメインボディの後に続きます。バージョン 1.5 では、オプションの相互参照ストリームが導入されました。これは、フィルタが適用される可能性のある標準ストリーム オブジェクトの形をしています。このようなストリームは、ASCII 相互参照テーブルの代わりに使用でき、オフセットやその他の情報をバイナリ 形式で含みます。この形式は、整数の幅指定 (/W配列を使用) が可能である点で柔軟性があり、たとえば、サイズが 64 KiBを超えないドキュメントでは、オブジェクト オフセットに 2 バイトのみを割り当てることができます。後方互換性を確保するため、ハイブリッド参照 PDF ファイルには、従来の相互参照テーブルと相互参照ストリームの両方を含めることができ、古い PDF プロセッサでもファイルを読み取ることができ、バージョン 1.5 で導入された新機能を引き続き利用できます。[ 30 ]
PDFファイルの末尾には、以下の内容を含むフッターがあります。
startxrefの後に、相互参照テーブルの開始位置(xrefキーワードから始まる)へのオフセット、または相互参照ストリームオブジェクトの後に、%%EOFファイル終端マーカー。相互参照ストリームが使用されていない場合、フッターの前にtrailerキーワードが続き、その後に、本来であれば相互参照ストリームオブジェクトの辞書に含まれるはずの情報を含む辞書が続きます。
/Root)/Size)各ページ内には、ページに描画されるテキスト、ベクター、画像を記述する1つまたは複数のコンテンツストリームがあります。コンテンツストリームは、PostScriptと同様にスタックベースです。[ 31 ]
PDF ファイルには、非線形化 (「最適化」されていない) と線形化 (「最適化」されている) の 2 つのレイアウトがあります。非線形化 PDF ファイルは、線形化 PDF ファイルよりも小さくなる可能性がありますが、ドキュメントのページを組み立てるために必要なデータの一部が PDF ファイル全体に散らばっているため、アクセスが遅くなります。線形化 PDF ファイル (「最適化」または「Web 最適化」 PDF ファイルとも呼ばれます) は、最初のページを表示するために必要なすべてのオブジェクトがファイルの先頭に最適に整理されているため、Web ブラウザー プラグインでファイル全体がダウンロードされるのを待たずに読み取れるように構築されています。[ 32 ] PDF ファイルは、 Adobe AcrobatソフトウェアまたはQPDFを使用して最適化できます。
ページサイズはフォーマット自体によって制限されません。ただし、Adobe Acrobatでは1500万×1500万インチ、つまり225,000,000,000,000平方インチ(145,161 km² 、56,047平方マイル)という制限が設けられています。[ 2 ]: 1129
PDFにおけるグラフィックの表現方法の基本的な設計は、透明度の使用を除けば、PostScriptと非常によく似ています。透明度の使用はPDF 1.4で追加されました。
PDFグラフィックスは、デバイスに依存しない直交座標系を使用してページの表面を記述します。PDFページ記述では、マトリックスを使用してグラフィック要素を拡大縮小、回転、または傾斜させることができます。PDFの重要な概念はグラフィックス状態であり、これはページ記述によって変更、保存、復元できるグラフィックパラメータの集合です。PDFには(バージョン2.0の時点で)25個のグラフィックス状態プロパティがあり、その中でも特に重要なものをいくつか挙げます。
PostScriptと同様に、PDFのベクターグラフィックスはパスで構築されます。パスは通常、線と3次ベジェ曲線で構成されますが、テキストのアウトラインから構築することもできます。PostScriptとは異なり、PDFでは、単一のパスでテキストのアウトラインと線や曲線を混在させることはできません。パスは、ストローク、塗りつぶし、塗りつぶしてからストローク、またはクリッピングに使用できます。ストロークと塗りつぶしには、パターンを含む、グラフィックスの状態で設定された任意の色を使用できます。PDFは、いくつかの種類のパターンをサポートしています。最も単純なのは、アートワークを繰り返し描画するように指定するタイリングパターンです。これは、パターンオブジェクトで色を指定するカラータイリングパターン、またはパターンが描画されるときに色の指定を延期する無色タイリングパターンのいずれかです。PDF 1.3以降では、連続的に変化する色を描画するシェーディングパターンも使用できます。陰影パターンには7種類あり、その中で最も単純なのは軸方向陰影(タイプ2)と放射状陰影(タイプ3)です。
PDF 内のラスター画像 ( Image XObjectと呼ばれる) は、関連付けられたストリームを持つ辞書によって表現されます。辞書は画像のプロパティを記述し、ストリームには画像データが含まれます。(まれに、小さなラスター画像はインライン画像としてページ記述に直接埋め込まれることがあります。) 画像は通常、圧縮のためにフィルタリングされます。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種類の書体は、PDF文書において特別な意味を持つ。[ 33 ]
これらのフォント、または同じメトリクスを持つ適切な代替フォントは、ほとんどの PDF リーダーで使用できるはずですが、リーダーで使用できることが保証されているわけではなく、システムにインストールされている場合にのみ正しく表示される可能性があります。[ 34 ] 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 によって秘密にされていました。その後、それらは公開されました。[ 35 ]
PDF仕様における透明度グループの概念は、Adobe Illustratorなどのアプリケーションにおける「グループ」や「レイヤー」といった既存の概念とは独立しています。これらのグループ分けは、オブジェクトを編集する際に意味を持つ、オブジェクト間の論理的な関係性を反映していますが、イメージングモデルの一部ではありません。
タグ付き PDF (ISO 32000 の 14.8 項を参照) には、信頼性の高いテキスト抽出とアクセシビリティを可能にするための文書構造と意味情報が含まれています。[ 36 ]技術的に言えば、タグ付き PDF は PDF 1.3 で導入された論理構造フレームワークに基づいて構築された形式の様式化された使用法です。タグ付き PDF は、ページコンテンツ (テキスト、グラフィック、画像) を抽出して他の目的で再利用できるようにする一連の標準構造タイプと属性を定義します。[ 37 ]
PDF ファイルが印刷のみを目的としている場合、タグ付き PDF は必須ではありません。この機能はオプションであり、ISO 32000-1 におけるタグ付き PDF のルールは比較的曖昧であったため、2021 年現在、支援技術(AT) を含む利用機器におけるタグ付き PDF のサポートは不均一です。 [ 38 ]ただし、ISO 32000-2 ではタグ付き PDF に関する説明が改善されており、さらなる普及が期待されています。
アクセシビリティに特化したISO規格のPDFサブセットであるPDF/UAは、2012年に初めて公開された。
PDFバージョン1.5(2003年)の導入に伴い、レイヤーという概念が生まれました。レイヤーは、正式にはオプションコンテンツグループ(OCG)と呼ばれ、PDF文書内のコンテンツの一部を指し、文書の作成者や閲覧者が選択的に表示または非表示にすることができます。この機能は、CAD図面、レイヤー構造のアートワーク、地図、多言語文書などで役立ちます。
基本的には、ドキュメントルートに追加されたオプションコンテンツプロパティ辞書で構成されます。この辞書には、オプションコンテンツグループ(OCG)の配列が含まれており、各OCGは一連の情報を記述し、それぞれを個別に表示または非表示にすることができます。さらに、指定されたOCGの状態(表示または非表示)を示すオプションコンテンツ構成辞書のセットも含まれています。
セキュリティ上の理由から、 PDFファイルは暗号化される場合があります。その場合、コンテンツを表示または編集するにはパスワードが必要です。PDF 2.0では、PDF 2.0ファイルの標準として256ビットAES暗号化が定義されています。また、PDFリファレンスでは、サードパーティがPDF用の独自の暗号化システムを定義する方法も規定されています。
PDFファイルには、安全な認証を提供するためにデジタル署名を施すことができます。PDFにおけるデジタル署名の実装に関する詳細は、ISO 32000-2に記載されています。
PDFファイルには、コピー、編集、印刷などを制限するDRM(デジタル著作権管理)機能が埋め込まれている場合もあります。これらの制限は閲覧ソフトウェアが遵守するかどうかに依存するため、セキュリティ効果は限定的です。
PDF が提供する標準的なセキュリティは、2 つの異なる方法と 2 つの異なるパスワードで構成されています。1つは、ファイルを暗号化して開くことを防止するユーザー パスワード、もう 1 つは、文書が復号化されている場合でも制限されるべき操作を指定する所有者パスワードです。これには、文書からテキストやグラフィックを変更、印刷、コピーしたり、テキスト ノートやAcroFormフィールドを追加または変更したりすることが含まれます。ユーザー パスワードはファイルを暗号化しますが、所有者パスワードは暗号化せず、代わりにクライアント ソフトウェアがこれらの制限を尊重することに依存します。所有者パスワードは、無料のオンライン サービスを含むソフトウェアによって簡単に削除できます。[ 39 ]したがって、文書作成者が PDF 文書に設定した使用制限は安全ではなく、ファイルが配布された後は保証されません。この警告は、Adobe Acrobat ソフトウェアを使用して PDF ファイルを作成または編集する際に、このような制限を適用すると表示されます。
パスワードを削除しなくても、ほとんどのフリーウェアまたはオープンソースの PDF リーダーは権限の「保護」を無視し、ドキュメントがパスワード保護によって制限されていないかのように、ユーザーがテキストの一部を印刷したりコピーしたりできるようにします。[ 40 ] [ 41 ] [ 42 ]
PDF 1.5以降、使用権限(UR)署名は、特定のPDFビューアアプリケーションではデフォルトでは利用できない追加のインタラクティブ機能を有効にするために使用されます。署名は、権限が正当な許可機関によって付与されたことを検証するために使用されます。たとえば、ユーザーに次のことを許可するために使用できます。[ 43 ]
例えば、Adobe Systems は公開鍵暗号を使用して Adobe Reader の追加機能を有効にする権限を付与します。Adobe Reader は署名がAdobe が承認した認証局の証明書を使用していることを検証します。どの PDF アプリケーションも独自の目的でこの同じメカニズムを使用できます。[ 43 ]
受信者のシステムがパッチ未適用などの特定の状況下では、署名者が文書に署名した後、受信者が見る情報は送信者によって操作される可能性がある。 [ 44 ]
PAdES ( PDF Advanced Electronic Signatures ) は、PDF および ISO 32000-1 [ 45 ]に対する一連の制限と拡張機能であり、高度な電子署名に適しています。これはETSIによってTS 102 778 として公開されています。 [ 46 ]
PDFファイルには、プロセッサがアクセスしてローカルファイルシステムに開いたり保存したりできるファイル添付ファイルを含めることができます。[ 47 ]
PDF ファイルには 2 種類のメタデータを含めることができます。[ 2 ] 1 つ目は文書情報辞書で、作成者、タイトル、件名、作成日、更新日などのキーと値のフィールドのセットです。これはオプションで、Infoファイルのトレーラー内のキーから参照されます。少数のフィールドが定義されており、必要に応じて追加のテキスト値で拡張できます。この方法は PDF 2.0 で非推奨になりました。
PDF 1.4では、他のファイル形式で使用されているXML標準ベースの拡張可能なメタデータを追加するために、拡張メタデータプラットフォーム(XMP)を使用したメタデータストリームのサポートが追加されました。PDF 2.0では、拡張可能なスキーマを使用して、埋め込みイラスト、フォント、画像に関する情報など、ドキュメント内の任意のオブジェクト、およびドキュメント全体(ドキュメントカタログに添付)にメタデータを添付できます。
PDF 文書には、ビューア設定オブジェクトにページ表示レイアウトやズームレベルなどの表示設定が含まれる場合もあります。Adobe Reader は、文書を開く際にこれらの設定を使用してユーザーのデフォルト設定を上書きします。[ 48 ]無料の Adobe Reader ではこれらの設定を削除することはできません。
PDFファイルは、障害のある人がアクセスしやすいように特別に作成することができます。[ 49 ] [ 50 ] [ 51 ] [ 52 ] [ 53 ] 2014年時点で使用されているPDFファイル形式タグ、テキストの代替、キャプション、音声解説などを含めることができます。一部のソフトウェアはタグ付き PDF を自動的に生成できますが、この機能はデフォルトで有効になっているとは限りません。[ 54 ] [ 55 ] JAWS、Window-Eyes、Hal、Kurzweil 1000 および 3000などの主要なスクリーン リーダーは、タグ付き PDF を読み取ることができます。[ 56 ] [ 57 ]さらに、タグ付き PDF は、視覚障害のある読者のために再配置および拡大することができます。古い PDF やスキャンされたドキュメントから生成された PDF にタグを追加すると、いくつかの課題が生じる可能性があります。
PDFのアクセシビリティにおける大きな課題の一つは、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 固有のアクセシビリティ ルールを確立しています。[ 58 ]
リッチメディアPDFとは、ファイル内に埋め込みまたはリンクできるインタラクティブなコンテンツを含むPDFファイルです。画像、音声、動画コンテンツ、ボタンなどを含めることができます。例えば、インタラクティブなPDFがEコマースビジネスのデジタルカタログである場合、PDFページに商品を一覧表示し、画像やウェブサイトへのリンク、ドキュメントから直接注文できるボタンなどを追加できます。
インタラクティブフォームは、PDF ファイル形式にフォームを追加するメカニズムです。PDF は現在、データと PDF フォームを統合するための 2 つの異なる方法をサポートしています。現在、両方の形式が PDF 仕様に共存しています。[ 43 ] [ 59 ] [ 60 ] [ 61 ]
AcroForms は PDF 1.2 フォーマットで導入されました。AcroForms では、オブジェクト (テキスト ボックス、ラジオ ボタンなど) や一部のコード (JavaScript など) を使用できます。標準のPDFアクションタイプに加えて、インタラクティブ フォーム (AcroForms) は、データの送信、リセット、インポートをサポートします。「送信」アクションは、選択されたインタラクティブ フォーム フィールドの名前と値を、指定された Uniform Resource Locator (URL) に送信します。インタラクティブ フォーム フィールドの名前と値は、(アクションの ExportFormat、SubmitPDF、および XFDF フラグの設定に応じて) のいずれかの形式で送信できます。[ 43 ]
PDF 1.4で定義されているように、個々のフィールドや値ではなく、文書全体を提出することができます。
AcroForms は、キーと値のペアを含む外部のスタンドアロン ファイルにフォーム フィールドの値を保持できます。外部ファイルでは、フォーム データ フォーマット (FDF) ファイルと XML フォーム データ フォーマット (XFDF) ファイルを使用できます。[ 65 ] [ 63 ] [ 66 ]使用権限 (UR) シグネチャは、FDF、XFDF、およびテキスト ( CSV / TSV ) 形式のフォーム データ ファイルのインポート、および FDF と XFDF 形式のフォーム データ ファイルのエクスポートの権限を定義します。[ 43 ]
PDF 1.5では、Adobe Systemsが独自のフォームフォーマットであるAdobe XML Forms Architecture(XFA)を導入しました。Adobe XFAフォームは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仕様に準拠したソフトウェアの開発においてロイヤリティフリーで使用できるようにライセンスを供与しています。[ 67 ]
2019 年 11 月、ルール大学ボーフムと Hackmanit GmbH の研究者らは、デジタル署名付き PDF に対する攻撃を発表しました。[ 68 ]彼らは、実装上の欠陥を悪用して、22 のデスクトップ PDF ビューアのうち 21 と 8 のオンライン検証サービスのうち 6 で署名を無効にすることなく、署名付き PDF の表示内容を変更する方法を示しました。同じ会議で、彼らはさらに、PDF 内の暗号化されたコンテンツの平文を抜き出す方法も示しました。[ 69 ] 2021 年に、彼らは仕様で提供される機能の柔軟性を悪用する、いわゆるシャドウ攻撃と呼ばれる PDF に対する新たな攻撃を示しました。 [ 70 ] Jens Müller は、サービス拒否、情報漏洩、データ操作、および任意のコード実行攻撃に関する PDF のセキュリティ問題の概要を発表しました。[ 71 ] [ 72 ]
一部の人気PDFリーダーには、ウイルス、トロイの木馬、その他のマルウェアに感染したPDFファイルが損害を与えることを可能にするセキュリティ脆弱性の歴史があります。そのようなPDFファイルには、PDFリーダーの脆弱性を悪用する可能性のある隠されたJavaScriptコード、それらを隠しているファイルが開かれたときに実行される隠されたオブジェクト、そしてまれに悪意のあるPDFがマルウェアを起動する可能性があります。[ 73 ]
ウイルスを含む PDF 添付ファイルは 2001 年に初めて発見されました。OUTLOOK.PDFWormまたはPeachyと呼ばれるこのウイルスは、Microsoft Outlook を使用して、添付ファイルとして Adobe PDF ファイルとして自身を送信します。Adobe Acrobat ではアクティブ化されますが、Acrobat Reader ではアクティブ化されません。[ 74 ]
長年にわたり、Adobe Reader のさまざまなバージョンでいくつかの脆弱性が発見され、[ 75 ]同社はセキュリティ修正プログラムを発行しました。他の PDF リーダーでも脆弱性が発見されています。厄介な要因の 1 つは、Web ページに PDF ファイルが埋め込まれている場合に PDF リーダーが自動的に起動するように設定できるため、攻撃の経路となることです。悪意のある Web ページに、PDF リーダーの脆弱性を悪用する感染した PDF ファイルが含まれている場合、ブラウザが安全であってもシステムが侵害される可能性があります。これらの脆弱性の一部は、PDF ファイルに埋め込まれた JavaScript の処理が不適切な PDF リーダーが原因です。PDF リーダーで JavaScript の実行を無効にすると、将来の悪用を軽減できますが、PDF ビューア ソフトウェアの他の部分での悪用を防ぐことはできません。一部のセキュリティ専門家は、JavaScript は PDF リーダーに必須ではなく、JavaScript を無効にすることで得られるセキュリティ上の利点は、発生する互換性の問題を上回ると述べています。[ 76 ] PDF ファイルの悪用を回避する 1 つの方法は、ローカル サービスまたは Web サービスを使用して、表示する前にファイルを別の形式に変換することです。
2010年3月30日、セキュリティ研究者のディディエ・スティーブンスは、Adobe ReaderとFoxit Readerの脆弱性を報告した。この脆弱性により、ユーザーが起動を許可した場合に悪意のある実行ファイルが実行される。[ 77 ]
PDF ストリームにはネストされたフィルタがあり、これにより 5 キロバイトのファイルを作成して RAM 上で 1 ペタバイトに展開することが可能になります。これは、pypdfの CVE-2025-55197の場合のように、これに対する保護がない実装に対してサービス拒否を引き起こすために使用できます。 [ 78 ] [ 79 ]
多くのPDFビューアは、さまざまなソースから無料で提供されています。PDFファイルを操作および編集するためのプログラムは、通常購入する必要があります。さらに、Chrome、Firefox、Safariなどの最新のWebブラウザのほとんどにはPDF表示機能が含まれており、以前はそのような目的で作成されたブラウザプラグインに取って代わっています。[ 80 ]
PDF を作成するためのソフトウェアオプションは多数あり、macOS、iOS、[ 81 ]、およびほとんどのLinuxディストリビューションに組み込まれている PDF 印刷機能も含まれます。LibreOffice 、Microsoft Office 2007 ( SP2に更新されている場合) 以降、[ 82 ] WordPerfect 9、Scribusなど、多くの文書処理ソフトウェアは、文書を PDF 形式でエクスポートできます。Microsoft Windows 用の PDF 印刷ドライバ、pdfTeX組版システム、DocBook PDF ツール、 Ghostscriptをベースに開発されたアプリケーション、Adobe Acrobat自体、Adobe InDesign、Adobe FrameMaker、Adobe Illustrator、Adobe Photoshop など、「PDF プリンタ」を設定できるものが多数あり、これを選択すると、物理的なプリンタではなく PDF ファイルに出力が送信されます。Googleのオンライン オフィス スイートであるGoogle Docsでは、PDF へのアップロードと保存が可能です。一部の Web アプリでは、無料の PDF 編集および注釈ツールが提供されています。
フリーソフトウェア財団は、優先度の高いプロジェクトの 1 つとして、「PDF ファイル形式と関連技術を ISO 32000 規格に実装する、無料かつ高品質で完全に機能するライブラリとプログラムのセットを開発」していました。[ 83 ] [ 84 ]しかし、2011 年に、GNU PDF プロジェクトは、GNOME デスクトップ環境の Evinceなどのアプリケーションで広く使用されているPopplerライブラリの成熟により、「優先度の高いプロジェクト」のリストから削除されました。 [ 85 ] Poppler はXpdf [ 86 ] [ 87 ]コードベースに基づいています。PDFソフトウェアのリストに記載されているように、商用の開発ライブラリも利用可能です。
Apache Software Foundationの Apache PDFBox プロジェクトは、PDF文書を扱うためのApache Licenseの下でライセンスされたオープンソースの Java ライブラリです。 [ 88 ]
ラスタイメージプロセッサ(RIP)は、PDFファイルをラスタライズと呼ばれるプロセスで、プリンター、デジタル印刷機、プリプレスで紙やその他のメディアに画像化するのに適したラスタ形式に変換するために使用されます。PDFを直接処理できるRIPには、Adobe SystemsのAdobe PDF Print Engine [ 89 ] 、 Global GraphicsのJaws [ 90 ]およびHarlequin RIPなどがあります。
1993年、Global Graphics社のJawsラスターイメージプロセッサは、PDFを他の形式に変換することなくネイティブに解釈できる最初の出荷プリプレスRIPとなった。同社は1997年に、同じ機能を備えたHarlequin RIPのアップグレード版をリリースした。[ 91 ]
Agfa-Gevaertは、PDFをベースとした初のプリプレスワークフローシステムであるApogeeを1997年に発表し、出荷を開始した。
多くの商業オフセット印刷会社は、印刷ソースとして印刷準備済みのPDFファイル、特にPDF/X-1aサブセットとそのバリエーションの提出を受け入れています。[ 92 ]印刷準備済みのPDFファイルの提出は、収集されたネイティブ作業ファイルを受け取るという問題のある必要性の代替となります。
2006年、 Open Source Development Labs Printing SummitでPDFが標準印刷ジョブフォーマットとして広く受け入れられました。Common Unix Printing Systemで印刷ジョブフォーマットとしてサポートされており、GNOME、 KDE、Firefox、Thunderbird、LibreOffice、OpenOfficeなどのデスクトップアプリケーションプロジェクトは、印刷ジョブをPDFで出力するようになりました。[ 93 ]
一部のデスクトッププリンターは、外部の助けを借りずにPDFデータを解釈できる直接PDF印刷にも対応しています。
PDF は、 macOS (当初は Mac OS X と呼ばれていました) の「ネイティブ」メタファイル形式として選択され、以前のクラシック Mac OS の PICT 形式に取って代わりました。Quartzグラフィックスレイヤーのイメージングモデルは、 Display PostScriptと PDFに共通するモデルに基づいており、 Display PDFというニックネームが付けられました。プレビューアプリケーションは PDF ファイルを表示でき、 Safari Web ブラウザーのバージョン 2.0 以降も同様です。[ 94 ] [ 95 ] 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も同様です。後者はLaTeX、SyncTeX、PDFSync との連携、およびBibDesk文献管理ソフトウェアとの統合をサポートしています。[ 96 ]フリーウェアのQiqqa は、PDF ライブラリ全体で作成したすべての注釈とメモをまとめた注釈レポートを作成できます。テキスト検証ツールは、ドキュメントの差異を注釈とマークアップとしてエクスポートします。
PDFやその他の文書形式への注釈をサポートするWeb注釈システムも存在する。PDFが紙文書と同等の機能を持つことが求められる場合は、手書きによる注釈が必要となる。
PDF は、異なるソフトウェアやハードウェア プラットフォーム間でドキュメントの視覚的な外観を維持することに重点を置いているため、PDF ドキュメントを他のファイル形式に変換したり、テキスト、画像、表、書誌情報、ドキュメントメタデータなどの情報を抽出したりする際に課題が生じます。これらのタスクをサポートするツールやソース コード ライブラリが多数存在します。PDF 変換ツールや情報抽出ツールをテストするためのラベル付きデータセットがいくつか存在し、ツールのパフォーマンスのベンチマーク評価に使用されています。[ 97 ]
Open XML Paper Specificationは、競合するフォーマットであり、 Windows Vista以降、ページ記述言語として、またMicrosoft Windowsのネイティブ印刷スプーラーフォーマットとして使用されています。
混合オブジェクト:ドキュメントコンテンツアーキテクチャは、競合するフォーマットです。MO:DCA-Pは、アドバンストファンクションプレゼンテーションの一部です。
例:文書フォーマットに関するISO/IEC 29500、ISO/IEC 26300、ISO 32000は、すべての関係者がアクセスできない情報(独自の技術やブランド名への参照、不完全な範囲、または無効なWebリンク)を参照しています。
はまだISO標準ではありません。委員会はAdobe Systemsに対し、XFA仕様書、XMLフォームアーキテクチャ(XFA)を標準化のためにISOに提出するよう要請します。委員会はXFA仕様書の安定性について懸念しています。パート2ではXFA 3.1を参照します。
使用されました。
は、xpdf-3.0 コードベースに基づく PDF レンダリングライブラリです。
は GNU General Public License (GPL) バージョン 2 または 3 に基づいてライセンスされています。
デジタルファイルまたはPDFから直接グラフィックプロジェクトを商業印刷することに関心のある方へ。