IOUtilsは、Apache PDFBoxにおけるユーティリティクラスで、PDFドキュメントを扱う際に一般的に必要となる入出力操作のヘルパーメソッドを提供します。ストリームの読み取り、ストリーム間のデータコピー、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
)
に直接関連するものではありませんが、IOUtilsは標準準拠のPDFファイルの解析、操作、生成に必要な基盤となる操作をサポートします。
IOUtilsは、Apache PDFBoxライブラリ内のJavaユーティリティクラスで、PDF開発ワークフロー全体で使用される一般的なI/Oパターンを抽象化します。ドキュメント構造、コンテンツストリーム、または
(
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固有のクラスとは異なり、IOUtilsは低レベルのバイトおよびストリーム操作に焦点を当てています。このクラスは、InputStreamからバイトを読み取る、OutputStreamにデータを書き込む、リソースを安全にクローズする、異なるI/Oタイプ間で変換するなどのタスクのための静的メソッドを提供します。他のPDFBoxコンポーネントがファイルアクセス、ネットワーク操作、メモリ管理のために依拠する基盤レイヤーとして機能します。IOUtilsは、PDFファイルのバイナリ特性の処理やPDF処理で遭遇するさまざまなストリームタイプの管理など、PDFBoxの特定の要件に最適化されている点で、標準的なJava I/Oユーティリティとは異なります。
JPEGFactoryは、Apache PDFBoxにおけるユーティリティクラスで、PDF文書内でのJPEG画像の作成と管理を担当します。JavaのBufferedImageオブジェクトをPDF互換のJPEG画像フォーマットに変換するメソッドや、JPEGデータからPDFImageXObjectインスタンスを作成するメソッドを提供します。このクラスは、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
)
によれば、画像は適切にエンコードされ、文書構造内でimage XObjectsとして参照される必要があります。
JPEGFactoryは、Apache PDFBoxライブラリ内の特化型ファクトリクラスで、標準的なJavaイメージングAPIとPDF画像要件の橋渡しを行います。汎用的な画像処理クラスとは異なり、JPEGFactoryはPDF仕様標準に準拠したJPEG圧縮とフォーマッティングに特化しています。このクラスは、BufferedImageオブジェクト、InputStreamソース、生のJPEGデータなど、さまざまな入力フォーマットを受け入れる静的メソッドを提供し、それらをPDFページに埋め込み可能なPDFImageXObjectインスタンスに変換します。JPEGFactoryは、JPEGエンコーディングパラメータ、色空間管理、適切な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フォーマット要件に画像が準拠することを保証します。
JPXFilterは、Apache PDFBoxのフィルタークラスで、PDFストリームに対するJPEG 2000(JPX)画像の圧縮と展開を実装しています。このフィルターは、JPEG 2000標準を使用して圧縮された画像データのエンコードとデコードを処理します。JPEG 2000は、
(
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文書でサポートされる複数の圧縮方式の一つです。JPXFilterにより、PDFBoxアプリケーションは、PDF仕様との互換性を維持しながら、最新の高品質画像圧縮を利用できます。
JPXFilterは、JPEG 2000(JPX)エンコーディングで圧縮されたストリームを処理するために特別に設計された、PDFBoxのフィルターアーキテクチャの具体的な実装です。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
)
。JPXFilterクラスは特に/JPXDecodeフィルタータイプを処理します。これはPDF文書内のJPEG 2000圧縮を示すものです。
LayerUtilityは、Apache PDFBoxライブラリに含まれるユーティリティクラスで、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
)
で定義されています。このクラスは、Javaアプリケーションを通じて、PDF文書内のレイヤー化されたコンテンツをプログラム的に作成、操作、整理する作業を簡素化します。
LayerUtilityは、Apache PDFBox内のヘルパークラスで、PDFレイヤー(オプショナルコンテンツ)を扱う際の複雑さをカプセル化します。既存のPDF文書に新しいレイヤーを追加したり、レイヤー構造を保持しながらあるPDFから別のPDFにコンテンツをインポートしたり、コンテンツストリームと関連するオプショナルコンテンツグループ間の関係を管理するための高レベルなメソッドを提供します。PDF辞書や配列を直接操作する必要がある低レベルのPDFBoxクラスとは異なり、LayerUtilityはレイヤー関連の操作に特化した、より開発者フレンドリーなインターフェースを提供します。このクラスは、
(
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構造要件を処理します。これには、オプショナルコンテンツプロパティ辞書と構成エントリの適切なセットアップが含まれます。
LegacyFillNonZeroRuleは、Apache PDFBox Javaライブラリにおいて、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
)
で定義されている2つの標準的な方法の1つであり、複雑なパスや自己交差するパスの内部でどの領域を塗りつぶしの対象として「内側」とみなすべきかを解決します。このクラスは、PDFBoxアプリケーション内でこの基本的なPDFグラフィックス操作へのプログラマティックなアクセスを提供します。
LegacyFillNonZeroRuleは、Apache PDFBoxにおいてパス塗りつぶしのための非ゼロワインディング数アルゴリズムをカプセル化する具象実装クラスです。PDFグラフィックスでは、パスが描画される際、システムはどの囲まれた領域を色で塗りつぶすべきかを判定する必要があります。非ゼロワインディングルールは、各点に対してワインディング数を計算することでこれを実現します。つまり、パスがその点の周りを何回巻いているかをカウントし、時計回りと反時計回りの方向が逆符号で寄与します。ワインディング数が非ゼロの場合、その点はパスの内側とみなされ、塗りつぶされます。
これは、単にパスの交差回数をカウントし、カウント数が奇数の領域を塗りつぶす偶奇塗りつぶしルール(PDFにおける代替方法)とは異なります。非ゼロワインディングルールは、特定の方向性を持つパスに特に有用であり、多くのグラフィックスシステムでデフォルトの塗りつぶしルールとなっています。クラス名の「Legacy」接頭辞は、古いPDFBoxコードベースや以前のPDF実装との後方互換性のために維持されていることを示唆しています。
Apache PDFBoxを使用してPDFの生成、操作、またはレンダリングを行う開発者にとって、LegacyFillNonZeroRuleの理解は、複雑なベクターグラフィックス、カスタムパス操作、またはPDFドキュメントで塗りつぶされた図形の表示方法を正確に制御する際に不可欠です。塗りつぶしルールの選択は、重なり合うパスや自己交差するパスの視覚的な出力に大きく影響します。これらはロゴ、複雑なイラスト、技術図面で頻繁に発生します。
LineToは、Apache PDFBox Java API内で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
)
で定義されているベクターグラフィックスシステムの一部を構成します。このクラスは、PDFドキュメント内でカスタム図形、境界線、グラフィカル要素をプログラム的に作成する際に不可欠です。
LineToは、Apache PDFBoxのパス構築API内の具象実装クラスであり、PDFコンテンツストリーム構文における「l」(line-to)演算子に対応します。呼び出されると、構築中の現在のパスに直線セグメントを追加し、現在の位置からパラメータとして指定された新しいx, y座標まで延長します。描画せずに位置を変更するMoveTo演算子とは異なり、LineToは実際にパスに可視的な線分を追加します。このクラスは、低レベルのPDF演算子をラップするPDFBoxのオブジェクト指向抽象化レイヤーの一部であり、Javaデベロッパーにとってパス構築をより扱いやすくします。LineTo操作は、パス構築のコンテキスト内で使用する必要があり、通常はMoveTo操作の後、strokeやfillなどのパス描画演算子の前に使用されます。
PDF生成や操作を行うデベロッパーにとって、LineToは、単純なテキストや画像を超えたカスタムベクターグラフィックス、図形、視覚要素を作成するための基本となります。これにより、カスタム表の境界線、装飾線、署名ボックス、フォームフィールドの境界など、ドキュメントレイアウト要素をプログラム的に正確に制御できます。LineToの理解は、特にアクセシブルなPDFドキュメントを作成する際に重要です。適切に構築されたパスは、Tagged Contentをサポートする視覚構造に貢献できるためです
(
Citation: PDF Association, 2023
PDF Association(2023). Retrieved from
https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
)
。正確な線分を描画する機能は、カスタム注釈、墨消しマーク、特殊な視覚インジケータを必要とするアプリケーションにとっても重要です。LineToのようなパス構築演算子をマスターすることで、デベロッパーは外部のグラフィックスライブラリに依存せず、プロフェッショナルで仕様準拠のPDFドキュメントを作成できます。
LosslessFactoryは、Apache PDFBoxにおいて、可逆圧縮を用いた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
)
で規定されているように、テキスト、図表、またはピクセル単位での正確性が求められる画像を扱う際に特に重要です。このファクトリクラスは、高忠実度を必要とする視覚的コンテンツを含むPDF文書をプログラムで生成または変更する際に一般的に使用されます。
LosslessFactoryは、Apache PDFBoxライブラリ内のJavaクラスであり、可逆圧縮アルゴリズムを用いてPDFImageXObjectインスタンスを作成することに特化しています。ファイルサイズを削減するためにデータを破棄する非可逆圧縮方式とは異なり、LosslessFactoryは元の画像データのすべてのビットを保持するため、品質を妥協できないコンテンツに最適です。このクラスは、BufferedImageオブジェクトを受け取り、Flate(ZIP)圧縮などの可逆圧縮技術を使用してPDF互換の画像リソースに変換する静的メソッドを提供します。これは、JPEGなどの非可逆圧縮スキームを適用する可能性のあるPDFBoxの他の画像処理アプローチとは異なります。非可逆圧縮では、アーティファクトが生じたり視覚品質が低下したりする可能性があり、
(
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
)
などの標準に準拠したアクセシブルな文書を作成する際には重要な考慮事項となります。
LZWFilterは、Apache PDFBoxのクラスであり、PDFストリームオブジェクトに対してLempel-Ziv-Welch(LZW)圧縮を実装します。このフィルターは、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
)
で定義されている可逆データ圧縮および解凍機能を提供します。LZW圧縮は歴史的にPDFファイルで一般的に使用されていましたが、特許の問題やより効率的な代替手段の登場により、現在では他の圧縮方法に大きく取って代わられています。
LZWFilterは、Apache PDFBoxにおけるストリームフィルターの具体的な実装であり、PDFドキュメント内で指定される/LZWDecodeフィルタータイプを処理します。このクラスは、PDFBoxのフィルターアーキテクチャを拡張し、LZWアルゴリズムを使用して圧縮されたストリームのエンコードとデコードを行います。LZWアルゴリズムは、データ内の繰り返しパターンの辞書を構築することで圧縮を実現します。deflateベースのフィルター(FlateDecode)とは異なり、LZWは辞書ベースのアプローチを使用します。このアプローチは、元々Unixのcompressユーティリティ用に開発され、後にGIF画像や初期のPDFバージョンで使用されました。このフィルターは、PDFコンテンツストリーム、画像データ、および圧縮を必要とする他の埋め込みリソース内のバイトストリームに対して動作します。
Apache PDFBoxを使用する開発者にとって、LZWFilterを理解することは、いくつかの理由から重要です。第一に、レガシーPDFドキュメントでは頻繁にLZW圧縮が使用されているため、古いファイルを読み取るには適切なデコードサポートが不可欠です。第二に、PDFからコンテンツを抽出または操作する際、開発者はさまざまなフィルタータイプを透過的に処理する必要があり、LZWFilterはPDFBoxフレームワーク内でこの機能を提供します。第三に、さまざまな圧縮フィルターを理解することで、開発者はPDFドキュメントを作成または変更する際に、ファイルサイズの最適化と互換性について十分な情報に基づいた決定を下すことができます。歴史的な特許制限や最新の代替手段の優れた圧縮性能により、LZWは新しいPDF作成ではほとんど使用されませんが、LZW圧縮されたストリームを処理する機能により、多様なPDFエコシステムとの幅広い互換性が確保されます。
MacOSRomanEncodingは、Apache PDFBoxにおける文字エンコーディングクラスで、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
)
で定義されている標準ベースエンコーディングの一つであるMac OS Roman文字セットを実装しています。このエンコーディングは、PDF文書内のフォントで使用される文字コードをグリフにマッピングし、Macintoshの従来のテキストエンコーディングとの互換性を提供します。PDFBoxは、MacOSRomanがエンコーディングスキームとして指定されているPDFファイルを処理する際に、フォント処理やテキスト抽出のために内部的にこのクラスを使用します。
MacOSRomanEncodingは、Apache PDFBoxライブラリのJavaクラスで、Appleが元々Macintoshオペレーティングシステム用に開発したシングルバイト文字エンコーディングであるMac OS Romanエンコーディングを表現します。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
)
で定義されているように、MacOSRomanEncodingは、PDF文書がフォント内のバイト値を文字名にマッピングする際に参照できる5つの定義済みベースエンコーディングの一つです。
MacRomanEncodingは、Apache PDFBoxのクラスで、PDFドキュメント内で使用されるMac Roman文字エンコーディング方式を実装しています。このエンコーディングシステムは、Unicodeが採用される以前のMac OSシステムで主に使用されていた、レガシーなMacintosh Roman文字セットに従って、バイト値を特定の文字グリフにマッピングします。
(
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ファイルは、異なるプラットフォームやフォント間で正確なテキスト表現を保証するために、MacRomanEncodingを含むさまざまな定義済みエンコーディングを参照することができます。
MacRomanEncodingは、Apache PDFBoxにおける具体的な実装クラスで、PDF仕様で定義されている定義済みエンコーディングの1つであるMac Romanエンコーディング標準を表します。Mac Roman文字セットには256のコードポイントが含まれており、欧文引用符、アクセント付き文字、Macintosh出版環境で一般的に使用される特殊記号など、西ヨーロッパ言語をカバーしています。
PDFBoxのアーキテクチャにおいて、MacRomanEncodingは基底クラスであるEncodingクラスを拡張し、バイト値(0-255)とそれに対応する文字名およびUnicodeコードポイント間のマッピングを提供します。このクラスは、WinAnsiEncoding(Windows ANSI)やStandardEncoding(Adobeの標準)などの他のエンコーディング実装とは、特定の文字対コード割り当てにおいて異なり、特にプラットフォーム固有の文字が存在する上位128コードポイントで違いがあります。
PDFドキュメントを処理する際、PDFBoxはMacRomanEncodingを使用して、Mac Roman文字セットでエンコードされたテキスト文字列を正しく解釈し、文字がドキュメント作成者が意図したとおりに表示されることを保証します。
Macintoshシステムで作成された、またはMacintoshシステム向けに作成されたPDFドキュメントを扱う開発者にとって、MacRomanEncodingは正確なテキスト抽出とレンダリングに不可欠です。Macベースのアプリケーションで生成されたレガシーPDFファイルには、Mac Romanエンコーディングのフォントが埋め込まれていることが多く、適切なエンコーディングサポートがないと、テキストが破損したり、間違った文字が表示されたり、読み取り不可能になったりする可能性があります。