JPEG 2000は、ウェーブレットベースの画像圧縮規格であり、従来のJPEGと比較して優れた圧縮効率と画質を提供します。PDF文書では、JPEG 2000画像はJPXDecodeフィルタを通じてサポートされており、開発者はより小さなファイルサイズで高品質な画像を埋め込むことができます
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
。この形式は、スケーラブルな画質、プログレッシブデコーディング、または可逆圧縮オプションを必要とするアプリケーションにおいて特に有用です。
JPEG 2000は、従来のJPEG圧縮で使用される離散コサイン変換(DCT)の代わりに離散ウェーブレット変換(DWT)を使用する画像圧縮規格です。画像を8×8ピクセルのブロックに分割する標準JPEGとは異なり、JPEG 2000は画像全体を連続的なウェーブレット変換として処理するため、ブロックノイズを排除し、高圧縮率でもより良好な画質を提供します。この形式は、非可逆圧縮モードと可逆圧縮モードの両方をサポートし、アルファチャンネルの透明度や、より多くのデータを受信するにつれて画質が向上するプログレッシブデコーディングにも対応しています。PDF仕様では、JPEG 2000ストリームはJPXDecodeフィルタによって識別され、文書構造内にImage XObjectとして埋め込むことができます
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
。
JPXDecodeは、JPEG 2000標準(ISO/IEC 15444)を使用してPDF文書内の画像データを圧縮・展開するためのフィルタです。
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
で定義されているように、このフィルタはプログレッシブデコード、関心領域符号化、可逆圧縮オプションなどの高度な画像圧縮機能を提供します。JPXDecodeは、従来のDCTDecode(JPEG)フィルタと比較して優れた圧縮率と画像品質を実現し、PDF ファイル内の高品質な画像コンテンツに特に有用です。
JPXDecodeは、PDF文書内のImage XObjectにJPEG 2000圧縮および展開アルゴリズムを適用するストリームフィルタです。元のJPEG標準を使用する旧式のDCTDecodeフィルタとは異なり、JPXDecodeはより高度なJPEG 2000ウェーブレットベースの圧縮方式を実装しています。このフィルタは、非可逆および可逆圧縮モード、マルチコンポーネント画像、およびDeviceGray、DeviceRGB、DeviceCMYK、ICCベース色空間を含む様々な色空間をサポートします。
JPXDecodeと他の画像フィルタとの主な違いは、離散コサイン変換ではなく離散ウェーブレット変換を使用することで、より柔軟な圧縮特性を実現している点です。JPXDecodeストリームには、JP2フォーマット内に必要なすべての色空間とコンポーネント情報が埋め込まれた完全なJPEG 2000コードストリームを含めることも、色空間とパラメータ仕様をPDF画像辞書に依存する最小限のコードストリームとすることもできます。
PDF生成や操作を行う開発者にとって、JPXDecodeは高品質画像を扱う際に大きな実用的利点を提供します。優れた圧縮効率により、視覚品質を損なうことなくファイルサイズを小さくできるため、医用画像、地理空間データ、デジタル写真、アーカイブ文書などを扱うアプリケーションにとって非常に重要です。これは、ストレージコスト、伝送帯域幅、エンドユーザーのダウンロード時間に直接影響します。
Launch actionは、リンクやボタンのクリックなどのユーザー操作によってトリガーされたときに、PDFビューアに対して外部アプリケーションやファイルを開くよう指示するPDFアクションの一種です。
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
で定義されているように、Launch actionはPDFがオペレーティングシステムと相互作用し、PDF自体の外部にあるプログラムやドキュメントを起動するメカニズムを提供します。しかし、重大なセキュリティリスクがあるため、Launch actionは現代のPDF仕様では制限または非推奨とされており、より安全な代替手段を使用すべきです。
Launch actionは、PDFファイル内のアクション辞書で、タイプが/Launchであり、実行する外部アプリケーションまたはデフォルトアプリケーションで開くファイルを指定するものです。このアクションには、ファイルパスやアプリケーション名、オプションのコマンドラインパラメータ、起動動作を制御するフラグなどのパラメータが含まれます。Launch actionは、他のPDFアクション(PDF内をナビゲートするGoToアクションや、WebブラウザでWeb URLを開くURIアクションなど)とは異なり、ローカルのオペレーティングシステムと直接相互作用して任意のプログラムやファイルを実行します。この根本的な違いにより、Launch actionは特に強力ですが、セキュリティの観点から潜在的に危険なものとなっています。
Launch actionの理解は、PDFのセキュリティとコンプライアンスに取り組む開発者にとって重要です。現代のPDFワークフローでは、Launch actionが適切な警告や同意なしにユーザーのシステム上で悪意のあるコードを実行するために悪用される可能性があるため、通常、Launch actionを禁止するか厳しく制限します。PDF生成システムを作成する開発者は、特に公開配布やアクセシビリティコンプライアンスを目的としたPDFにおいて、出力ドキュメントにLaunch actionが誤って含まれないようにする必要があります。既存のPDFをレビューする場合や、PDFリーダーを実装する場合、開発者はLaunch actionを認識し、ユーザーへの警告表示や、セキュリティポリシーに基づく実行の完全ブロックなど、適切なセキュリティ対策を実装する必要があります。
レイヤーは、PDFドキュメントにおけるオプショナルコンテンツグループ(OCG)を指す一般的なユーザー向けの用語です。レイヤーを使用することで、ユーザーの設定、アプリケーションの設定、または閲覧コンテキストに基づいて、PDF内の特定のコンテンツを選択的に表示または非表示にすることができます。
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
で定義されているように、このオプショナルコンテンツ機能により、異なる対象者や利用シーンに応じて同じドキュメントの異なるビューを提供する高度なドキュメントワークフローが可能になります。
PDF用語において、ユーザーやアプリケーションが一般的に「レイヤー」と呼ぶものは、技術的にはオプショナルコンテンツグループ(OCG)として実装されています。レイヤーは、テキスト、画像、注釈、フォームフィールドなどのPDFコンテンツオブジェクトの集合を表し、これらを一つの単位として表示・非表示にすることができます。グラフィックスアプリケーションの真のレイヤーシステムでは、コンテンツが厳密なz順序または重ね順の関係を持ちますが、PDFレイヤーは主に描画順序ではなく可視性の制御に関するものです。PDF仕様
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
は、アプリケーションがユーザーにレイヤーとして提示する基盤となるOCG構造を定義しています。単一のPDF内に複数のレイヤーを設定でき、コンテンツは複数のレイヤーに同時に属することができるため、複雑な可視性の組み合わせが可能です。レイヤーという比喩は、実際にはネストされたグループ、相互排他的な可視性状態、ポリシーベースの表示ルールなどの機能を持つ高度なオプショナルコンテンツシステムを簡略化したものです。
Leadingは、PDFドキュメント内のテキスト行間の垂直方向の間隔を指す組版用語です。PDFコンテンツストリームでは、leadingはTLオペレータを使用して設定され、T*や’などのオペレータを使用して次の行に進む際に、テキスト位置が垂直方向にどれだけ移動するかを決定します。この間隔パラメータは、
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
で定義されているように、テキストコンテンツの可読性と視覚的な外観を制御するために不可欠です。
Leadingは、ユーザー空間単位(通常はポイント)で測定される数値で、連続するテキスト行のベースライン間の距離を指定します。この用語は、活字印刷において行間の間隔を広げるために鉛の帯を金属活字の間に配置していた伝統的な印刷技術に由来します。PDFでは、leadingはテキスト状態の一部として保存され、フォントサイズとは独立して設定されますが、行が重ならないようにするため、通常はフォントサイズを超える値が設定されます。CSS行高さ(フォントサイズに対する相対値)とは異なり、PDFのleadingは明示的に変更されるまで一定に保たれる絶対値です。TLオペレータがleadingを設定すると、その後のT*(次の行に移動)または’と"(次の行に移動してテキストを表示)オペレータは、この値を使用してテキストの配置に必要な垂直オフセットを計算します。
PDF生成または操作を行う開発者にとって、leadingを理解することは、いくつかの理由から重要です。第一に、不適切なleading値は、テキスト行が重なったり、離れすぎたりして、ドキュメントが読みにくくなる原因となります。第二に、PDFからテキストを抽出またはリフローする際、leading値は段落構造と行の関係を判断するのに役立ちます。第三に、
(
Citation: N.A., 2014
(N.A.).
(2014).
Document management applications — Electronic document file format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1)
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/64599.html
)
などの規格に基づくアクセシビリティ準拠のために、適切なleadingは支援技術がテキストフローと読み上げ順序を正しく解釈できるようにします。最後に、JavaやJavaScriptなどの言語のライブラリを使用してプログラムでPDFを生成する場合、開発者はデザイン仕様に合致したプロフェッショナルな組版を実現するために、適切なleading値を明示的に設定する必要があります。
Line capは、PDF文書においてストローク描画されるオープンパスの端点の外観を制御するグラフィックス状態パラメータです。
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
で定義されているように、このプロパティは線の端を平らなbutt cap、丸いround cap、または突出したprojecting square capのいずれで描画するかを決定します。Line capスタイルは、PDFコンテンツストリーム内で描画される線の視覚的外観と正確な寸法の両方に影響を与えます。
Line capは、PDFレンダリングエンジンがオープンパスストロークの終端点をどのように描画するかを指定します。PDF仕様では、3つの異なるline capスタイルが定義されています:
- Butt cap (0): ストロークは端点座標で正確に終端し、線の方向に対して垂直な平らなエッジを持ちます
- Round cap (1): ストロークは端点を超えて延長され、線幅と等しい直径を持つ半円弧が追加されます
- Projecting square cap (2): ストロークは端点を超えて延長され、線幅の半分に等しい長方形の突起が追加されます
Line capはline joinとは異なります。line joinは2つのパスセグメントが角度を持って接合する箇所の外観を制御します。Line capはパスのオープンな端点にのみ適用され、クローズドパスや中間の頂点には適用されません。Line capの設定はグラフィックス状態の一部であり、変更されるまで以降のすべてのストローク操作に影響します。
Line joinは、PDFドキュメントでレンダリングする際に、パス内で2つの線分が交わる角の視覚的な外観を定義します。
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
で規定されているように、PDFは3つの異なるline joinスタイルをサポートしています:miter join(鋭角の角)、round join(曲線の角)、およびbevel join(平坦化された角)です。このストロークパラメータは、図形、境界線、グラフィック要素を含む、すべてのストロークされたパスの視覚的な表現に影響します。
Line joinは、2つの接続された線分が角度を持って交わる接合点をPDFレンダラーがどのように描画するかを制御するグラフィックス状態パラメータです。パスをストロークする際、レンダラーは、ストローク幅が線の幾何学的な交点を超えて延びる角の領域をどのように埋めるかを決定する必要があります。3つのline joinスタイルは、そのアプローチにおいて根本的に異なります:miter joinはストロークの外側のエッジを点で交わるまで延長し、鋭角の角を作成します。round joinは線幅と等しい直径の円弧を追加します。bevel joinは外側の端点を直線で接続し、事実上角を切り落とします。Line joinスタイルの選択は、線幅やline capスタイルなどの他のストロークパラメータとは独立していますが、これらは連携してストロークされたパスの完全な外観を定義します。
PDF生成や操作を行う開発者にとって、line joinスタイルを理解することは、ベクターグラフィックス、境界線、幾何学的図形の視覚的な外観を制御するために不可欠です。Line joinパラメータは、正確な角のレンダリングが重要な技術図面、建築図面、デザイン要素の専門的な外観に直接影響します。不適切なline join設定は、予期しない視覚的なアーティファクトを引き起こす可能性があります。特に、miter joinが過度に長いスパイクを生成する可能性のある鋭角において、またはデザイン仕様との一貫性が特定の角の処理を必要とする状況で問題が発生します。プログラムによってPDFコンテンツを作成または変更する際、開発者は適切なline join値を設定して、レンダリングされた出力がデザイン意図と一致し、異なるPDFビューアーおよびレンダリングエンジン間で視覚的な品質を維持することを保証する必要があります。
Linearized PDF(「fast web view」または「最適化」PDFとも呼ばれる)は、ドキュメント全体をダウンロードすることなく、Web上でページごとに効率的にアクセスできるように特別に構成されたPDFファイル構造です。
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
で定義されているように、linearizationはPDFの内部コンポーネントを再構成し、最初のページとその関連リソースをファイルの先頭に配置します。この最適化により、PDFビューアはドキュメントの残りの部分がバックグラウンドでダウンロードを続けている間に、最初のページを表示できるようになります。
LinearizationはPDF仕様で定義された厳密なルールに従って、PDFドキュメントの内部構造を再配置する特定のファイル構成技術です。オブジェクトが任意の順序でファイル全体に散在する可能性がある標準的なPDFとは異なり、linearized PDFはオブジェクトをシーケンシャルアクセスに最適化された所定の順序で配置します。ファイルはlinearization dictionaryで始まり、これにはhint tablesが含まれています。hint tablesはバイトオフセット情報を提供し、ビューアがバイト範囲リクエストを使用してWebサーバーから特定のページを迅速に検索およびリクエストできるようにします。
Linearized PDFは、単純に「圧縮」または「最適化」されたPDFとは異なります。圧縮はファイルサイズを削減しますが、linearizationはプログレッシブレンダリングのためにドキュメントのオブジェクト構造を特別に再構成します。Linearized PDFは、ファイルの最初のオブジェクトにlinearization parameter dictionaryが存在するかどうかを確認することで識別できます。このオブジェクトはobject 1として番号付けされた間接オブジェクトでなければなりません。
リストボックスは、PDF文書内の選択フォームフィールドの一種で、ユーザーが1つまたは複数の項目を選択できるオプションのリストを視覚的に表示します。クリック時に展開されるドロップダウンメニューとは異なり、リストボックスはスクロール可能な長方形の領域内に複数のオプションを同時に表示します。リストボックスはPDF仕様
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
においてインタラクティブフォームフィールドとして定義されており、アクセシビリティ準拠のために適切にタグ付けされる必要があります。
リストボックスは、縦に配置されたリスト形式で複数の選択可能なオプションを表示するフォームフィールドウィジェットです。コンボボックス(ドロップダウンリスト)とは異なり、複数のオプションがアクティブ化されるまで非表示になるのではなく、常に表示されている点が特徴です。リストボックスは、単一選択(新しいオプションを選択すると前の選択が解除される)またはマルチ選択モード(通常はCtrl+クリックまたはShift+クリックを使用して、ユーザーが複数の項目を同時に選択できる)のいずれかを許可するように設定できます。フィールドは、コンテンツが表示領域を超える場合にスクロールバーを表示し、ユーザーが利用可能なすべてのオプションをナビゲートできるようにします。PDF構造では、リストボックスはフィールドタイプが「Ch」(choice)のウィジェット注釈として表現され、フラグ値によって特定の動作が決定されます。
インタラクティブPDFフォームを扱う開発者にとって、リストボックスは、可視性と即座の比較が重要な複数のオプションを提示する際に不可欠なユーザーインターフェースコンポーネントを提供します。アクセシブルなPDFフォームを作成する際には、リストボックスの理解が不可欠です。スクリーンリーダーが利用可能なオプションと選択された値を障害のあるユーザーに正しく通知できるようにするため、適切なタグ付けと構造マークアップが必要です
(
Citation: N.A., 2014
(N.A.).
(2014).
Document management applications — Electronic document file format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1)
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/64599.html
)
。リストボックスはフォームのユーザビリティに関する意思決定に影響を与えます。リストボックスとコンボボックスのどちらを選択するかは、文書のレイアウトスペース、ユーザーのインタラクションパターン、フォーム入力の効率性に影響します。また、開発者は、アプリケーションでPDFフォームを処理する際に、リストボックスフィールドからデフォルト値をプログラムで設定し、選択を検証し、ユーザーが送信したデータを抽出する方法を理解する必要があります。
Local file securityとは、file://プロトコルを使用してローカルファイルシステムから直接PDFファイルを開いた際に、Webアプリケーションによるリクエストを制限するブラウザによるセキュリティ制約を指します。これらのセキュリティ対策は、悪意のあるローカルファイルがネットワークリソースや他のローカルファイルにアクセスすることを防ぐために、現代のWebブラウザに実装されています。
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
などのPDF仕様では直接言及されていませんが、local file securityはPDF.jsやその他のブラウザベースのPDFビューアがローカルファイルを扱う際の動作に大きな影響を与えます。
Local file securityは、ブラウザレベルのセキュリティポリシーであり、一般的にローカルファイルに対するSame-Origin Policy(SOP)として知られています。これは、file:// URLから実行されるJavaScriptがXMLHttpRequest(AJAX)呼び出しを行ったり、特定のブラウザAPIにアクセスしたりすることを制限します。ユーザーがハードドライブから直接ブラウザでPDFファイルを開くと、そのファイルはhttp://やhttps://のURLではなく、file://プロトコルのURLで読み込まれます。このような状況下では、ブラウザはHTTP/HTTPS経由で提供されるファイルに対してよりも厳格なセキュリティ制約を課します。これらの制限により、ローカルのHTML/JavaScriptが追加のリソースを取得したり、クロスオリジンリクエストを行ったり、Web Workersにアクセスしたりすることができなくなります。これらはすべて、PDF.jsのような現代のPDFビューアが複雑なPDFドキュメントを解析およびレンダリングするために通常必要とする機能です。これは異なるドメインからのHTTP/HTTPSリソースに適用されるCORS(Cross-Origin Resource Sharing)制限とは異なり、local file securityは特にファイルシステムプロトコル経由で読み込まれたファイルへのアクセスを制御します。