PDIndexed
PDIndexedは、Apache PDFBox PDModel APIのクラスで、PDF文書内のIndexedカラースペース(インデックス化色空間)を表現します。
PDIndexedは、Apache PDFBox PDModel APIのクラスで、PDF文書内のIndexedカラースペース(インデックス化色空間)を表現します。Indexedカラースペースは、カラールックアップテーブルを使用して単一のインデックス値を完全な色指定にマッピングすることで、 ( 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構造内でインデックス化色空間定義を作成、読み取り、操作するためのメソッドを提供します。
PDIndexedは、Apache PDFBoxのorg.apache.pdfbox.pdmodel.graphics.colorパッケージ内の具象実装クラスで、PDF仕様で定義されているIndexedカラースペースタイプに対応します。Indexedカラースペースは、基底色空間(RGBやCMYKなど)と、インデックス値(通常0〜255)をその基底空間内の特定の色にマッピングするカラールックアップテーブルを含んでいます。色値が直接色を指定する直接色空間とは異なり、PDIndexedは間接参照メカニズムとして機能し、画像が使用可能な色の一部のみを使用する場合にファイルサイズを大幅に削減します。
PDIndexedは、PDDeviceRGBやPDDeviceCMYKなどの他のPDFBoxカラースペースクラスとは異なり、それ自体がデバイス依存またはデバイス非依存のカラースペースではなく、別のカラースペースを参照し、事前定義されたパレットへのインデックスアクセスを提供する特殊なカラースペースタイプです。この特性により、ロゴ、アイコン、限られた色要件を持つグラフィックスなどの画像に特に有用です。
PDIndexedの理解は、PDF文書内の画像最適化とカラー管理を行う開発者にとって極めて重要です。限られたカラーパレットを持つ画像(PNG-8画像やGIF変換など)を含むPDFを処理または生成する際、インデックス化色空間の適切な処理により、完全なRGB表現と比較して50%以上のファイルサイズ削減が可能になることがあります。これは、帯域幅やストレージが懸念事項となるWeb配信やモバイルアプリケーション向けに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を扱う開発者にとって、PDIndexedを含むカラースペースの理解は、文書変換中に色情報が適切に保持され、十分な色コントラストが維持されることを保証するのに役立ちます。さらに、既存のPDF内の画像を抽出または置換する際、インデックス化色空間を認識して正しく処理することで、品質劣化や不必要なファイルサイズの増大を防ぐことができます。
PDIndexedは、基底色空間、最大インデックス値(hival)、実際の色値を含むルックアップテーブルという3つの主要コンポーネントを維持することで機能します。PDFレンダリングソフトウェアがインデックス化色空間を使用する画像内のピクセル値に遭遇すると、その値をルックアップテーブルへのインデックスとして使用して、基底色空間内の実際の色指定を取得します。
Apache PDFBoxでは、開発者はコンストラクタメソッドとgetter/setterメソッドを通じてPDIndexedと対話します。新しいインデックス化色空間を作成するには、基底色空間(PDDeviceRGB.INSTANCEなど)、最大インデックス値(8ビット画像の場合は通常255)、およびルックアップテーブルデータを含むバイト配列を使用してPDIndexedをインスタンス化します。ルックアップテーブルのサイズは、(hival + 1)に基底色空間のコンポーネント数を掛けた値と等しくなければなりません。
既存のPDFを読み取る際、PDFBoxはページリソースを解析する際に適切なPDIndexedオブジェクトを自動的にインスタンス化します。開発者は、getBaseColorSpace()を使用して基底色空間を取得し、getLookupData()でルックアップテーブルデータにアクセスし、getHighValue()で最大インデックスを照会できます。これらのメソッドにより、アプリケーションは色の使用状況を分析したり、色変換を実行したり、さらなる処理のためにパレット情報を抽出したりできます。
ルックアップテーブル自体は、連続するバイトが各インデックス位置の色コンポーネントを表すバイト配列として格納されます。たとえば、RGB基底色空間の場合、インデックス0〜2にはパレットエントリ0のR、G、B値が含まれ、インデックス3〜5にはパレットエントリ1の値が含まれる、といった具合です。
- PDDeviceRGB – インデックス化色の基底色空間として一般的に使用されるデバイス依存のRGBカラースペース
- PDColorSpace – Apache PDFBox内のすべてのカラースペース実装の抽象基底クラス
- PDResources – カラースペース、フォント、画像を含むページレベルのリソースのコンテナクラス
- PDImageXObject – インデックス化色空間を使用する可能性のあるPDF内の画像オブジェクトを表すクラス
- Color Lookup Table(カラールックアップテーブル) – インデックス化色空間においてインデックス値を実際の色にマッピングするデータ構造
- (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
- (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
