PDTypedDictionaryWrapper
PDTypedDictionaryWrapperは、Apache PDFBoxの高レベルPDModel APIにおける抽象基底クラスで、PDFディクショナリオブジェクトを扱うための型安全なJavaインターフェースを提供します。
PDTypedDictionaryWrapperは、Apache PDFBoxの高レベルPDModel APIにおける抽象基底クラスで、PDFディクショナリオブジェクトを扱うための型安全なJavaインターフェースを提供します。このクラスは、ページ、注釈、フォームフィールド、ドキュメントリソースなど、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 ) で定義された構造化要素を表す多くのPDFBoxクラスの基盤となっています。このラッパーパターンにより、開発者は低レベルのディクショナリのキーと値のペアを直接操作するのではなく、強く型付けされたJavaオブジェクトを使用してPDF構造を操作できます。
PDTypedDictionaryWrapperは、COSDictionary(PDFBoxにおける低レベルのPDFディクショナリ表現)をラップし、その内容を型付けされたgetterおよびsetterメソッドを通じて公開する抽象Javaクラスです。このクラスは、PDFBoxの低レベルCOS(Carousel Object System)レイヤーと高レベルPDModel API間のアダプターとして機能します。開発者がこのクラスを拡張すると、特定のPDFディクショナリタイプ用の専用ラッパーを作成できます。例えば、ページディクショナリ用のPDPage、注釈ディクショナリ用のPDAnnotation、リソースディクショナリ用のPDResourcesなどです。各サブクラスは、 ( 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メソッドにマッピングします。
COSDictionaryオブジェクトを直接操作する場合とは異なり、PDTypedDictionaryWrapperのサブクラスは、ディクショナリエントリに意味的な意義を提供し、PDF仕様の制約を強制し、型変換を自動的に処理します。例えば、矩形を表すディクショナリエントリを取得する際、ラッパーは生のCOS配列をPDRectangleオブジェクトに変換することで、コードの保守性を高め、エラーが発生しにくくします。
Apache PDFBoxを使用する開発者にとって、PDTypedDictionaryWrapperベースのクラスは、Javaの開発ベストプラクティスに沿ったクリーンなオブジェクト指向インターフェースを提供することで、PDF操作を大幅に簡素化します。ディクショナリのキー名を記憶したり、型変換を手動で管理したりする代わりに、開発者はIDEの自動補完と型チェックを使用して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ファイルを作成する可能性が低減されます。
型付けされたラッパーアプローチは、アクセシビリティ用のtagged content ( 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機能を扱う際に特に価値があります。これらの機能では、不正なディクショナリ構造がPDFリーダーとの深刻な互換性問題を引き起こす可能性があります。ラッパークラス内にPDF仕様の知識をカプセル化することで、PDFBoxは開発者が低レベルのPDF構文の詳細ではなく、アプリケーションロジックに集中できるようにします。
PDTypedDictionaryWrapperは、基礎となるCOSDictionaryオブジェクトへの参照を保持し、すべてのストレージ操作をそれに委譲します。開発者がPDFBoxを通じてPDF構造を作成またはアクセスする際、フレームワークは適切なPDTypedDictionaryWrapperサブクラスをインスタンス化し、PDFファイルのオブジェクト構造から対応するディクショナリと関連付けます。
ラッパーは、サブクラスが特定のAPIを実装する際に使用するprotectedユーティリティメソッドを提供します。これらのメソッドは、必須エントリとオプションエントリの取得、COSタイプとPDModelタイプ間の変換、変更されたディクショナリがPDF仕様に従って有効であることの保証など、一般的なパターンを処理します。例えば、tagged PDF構造を扱う際、ラッパークラスは構造要素が適切なドキュメントアクセシビリティに必要な正しいディクショナリエントリとデータ型を含むことを保証します。
変更が発生すると、変更は基礎となるCOSDictionaryに書き戻され、PDFBoxは後でPDFドキュメントを保存する際にそれをシリアライズします。この設計により、同じラッパーインスタンスを既存のPDFコンテンツの読み取りと新しい構造の作成の両方に使用でき、API全体で読み取りと書き込み操作の一貫性を維持できます。
- COSDictionary – 型付けされていないキーと値のコレクションとしてPDFディクショナリオブジェクトを表すPDFBoxの低レベルクラス
- PDModel – PDF文書構造用の型付けされたラッパークラスを含むApache PDFBoxの高レベルAPIパッケージ
- PDPage – メディアボックスやリソースなどのプロパティを持つPDF文書内の単一ページを表すPDTypedDictionaryWrapperサブクラス
- PDResources – ページコンテンツが使用するフォント、画像、その他の外部オブジェクトを管理するリソースディクショナリのラッパークラス
- PDStructureElement – アクセシビリティのためのドキュメント論理構造を定義するtagged PDF内の構造要素用の型付けされたディクショナリラッパー
- (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
