PDF content API
PDF content APIは、開発者がPDF文書のコンテンツを作成、読み取り、変更、抽出できるようにするプログラマティックインターフェースです。
PDF content APIは、開発者がPDF文書のコンテンツを作成、読み取り、変更、抽出できるようにするプログラマティックインターフェースです。これらのAPIは、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ファイル内のテキスト、グラフィックス、画像、その他の要素を操作できるようにします。Content APIはPDFファイル形式の複雑さを抽象化し、開発者がプログラムでドキュメントコンテンツを扱うための高レベルのメソッドを提供します。
PDF content APIは、さまざまな抽象化レベルでPDFドキュメントコンテンツと対話するためのメソッドとクラスを公開するソフトウェアライブラリまたはフレームワークです。PDFの表示に焦点を当てたPDFレンダリングAPIや、インタラクティブフィールドを扱うPDFフォームAPIとは異なり、content APIは具体的にドキュメントの実際のコンテンツオブジェクト(テキストストリーム、パス操作、画像、およびそれらのページ上の配置)を扱います。
これらのAPIは通常、コンテンツストリームの解析、位置情報を含むテキストの抽出、グラフィックス状態オペレーターの操作、コンテンツ要素の追加または削除、ドキュメントコンテンツの論理構造の再構築などの機能を提供します。これらは、 ( 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構文とアプリケーションレベルのビジネスロジックの間の中間層として機能し、コンテンツストリームの解析、オペレーターの認識、オブジェクトのシリアライゼーションといった低レベルの詳細を処理します。
Content APIは、その粒度においてドキュメントレベルのAPIとは異なります。ドキュメントAPIがページ操作やメタデータを扱うのに対し、content APIはページコンテンツストリーム内の個々のコンテンツオペレーターと描画命令のレベルで動作します。
PDF処理アプリケーションを構築する開発者にとって、content APIは単純な表示や印刷を超えるタスクに不可欠です。これらは、検索とインデックス作成のためのテキスト抽出、墨消しや透かしのためのコンテンツ変更、アクセシビリティ準拠のためのドキュメント分析を可能にします。
Content APIは、Tagged PDF構造 ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) を扱う際に特に重要です。これらにより、開発者は視覚的コンテンツと論理的なドキュメント構造を関連付けることができます。これは、PDF/UA ( 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 ) などの標準に準拠したアクセシブルなドキュメントを作成する上で不可欠であり、コンテンツのレンダリングと意味的な意味の間の関係が適切に確立されなければなりません。
堅牢なcontent APIがなければ、開発者は手動でPDF構文を解析し、コンテンツストリームオペレーターを解釈し、PDFエンコーディングにおける数多くのエッジケースを処理する必要があります。これはエラーが発生しやすく、時間のかかる作業です。高品質なcontent APIは、一般的なコンテンツ操作タスクのためのテストされた信頼性の高いメソッドを提供することで、開発時間を短縮し、バグを削減します。
PDF content 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 ) に従って、描画操作、テキスト配置、グラフィックス状態の変更を記述するオペレーターとオペランドのシーケンスが含まれています。
APIは通常、コンテンツストリームを個別のオペレーター(テキスト表示のためのTj、パス構築のためのmとl、外部オブジェクト呼び出しのためのDoなど)とそれに関連するオペランドにトークン化します。オペレーターを順次処理する際に、現在の変換行列、色空間、フォント、その他のレンダリングパラメーターを追跡するグラフィックス状態スタックを維持します。
テキスト抽出では、content APIはテキスト表示オペレーターをテキスト配置オペレーター(Td、Tm)およびフォントメトリクスと共に解釈して、表示されるテキストの実際の画面座標とUnicode値を計算します。コンテンツ変更では、APIはコンテンツストリームに新しいオペレーターを挿入したり、既存のものを更新したり、PDF構文の妥当性を維持しながらストリームを完全に再構築したりするメソッドを提供します。
高度なcontent APIは、間接オブジェクト参照、リソース辞書、相互参照の解決も処理し、PDFのオブジェクトベースのファイル構造の複雑さから開発者を保護します。これらは、開発者がドキュメント全体をメモリにロードすることなく、コンテンツを順次処理できるようにするイベントベースまたはビジターパターンインターフェースを提供する場合があります。
- Content stream(コンテンツストリーム) – ページの外観を定義するオペレーターとオペランドのエンコードされたシーケンス
- Graphics state(グラフィックス状態) – コンテンツのレンダリング方法を制御するパラメーターの集合
- Tagged PDF – アクセシビリティのためにコンテンツを意味的な意味と関連付けるPDF構造
- Text extraction(テキスト抽出) – Content APIを使用してPDFページからテキストコンテンツを取得するプロセス
- Page content operator(ページコンテンツオペレーター) – 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
- PDF Association (2023)
- PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
- (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
