RandomAccessInputStream
RandomAccessInputStreamは、Apache PDFBoxライブラリに含まれるJavaクラスで、さまざまな入力ソースからPDFファイルデータを読み取るための柔軟なインターフェースを提供します。
RandomAccessInputStreamは、Apache PDFBoxライブラリに含まれるJavaクラスで、さまざまな入力ソースからPDFファイルデータを読み取るための柔軟なインターフェースを提供します。このクラスは、基盤となるデータソースを一貫したストリームベースのAPIに抽象化することで、PDFBoxが ( 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文書を解析および処理できるようにします。PDFファイルの非線形構造を効率的にナビゲートするために不可欠な、バイトデータへのランダムアクセスをサポートしています。
RandomAccessInputStreamは、Apache PDFBoxの抽象基底クラスで、異なる入力ソース(ファイル、バイト配列、ネットワークストリームなど)をラップし、ランダムアクセス読み取り機能を提供します。開始位置から終了位置まで順次データを読み取ることしかできない逐次入力ストリームとは異なり、RandomAccessInputStreamでは、開発者がデータストリーム内の任意の位置にシークし、任意の順序でバイトを読み取ることができます。この機能は、PDFファイルにはクロスリファレンステーブルとオブジェクト参照が含まれており、ファイル構造内の異なる場所へのジャンプが必要になるため、極めて重要です。このクラスは、バイトの読み取り、特定位置へのシーク、ストリーム内の現在位置の追跡を行うメソッドを実装しており、PDF解析操作の基本的なコンポーネントとなっています。
JavaアプリケーションでPDF処理を行う開発者にとって、RandomAccessInputStreamは、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 ) で標準化されているPDF形式は、ファイル全体に散在するクロスリファレンスと間接オブジェクト参照に大きく依存しているため、効率的な解析にはランダムアクセスが不可欠です。この機能がなければ、単純なPDFプロパティの読み取りであっても、ファイル全体を複数回順次スキャンする必要が生じます。また、このクラスは異なる入力ソースの複雑性を抽象化するため、開発者は同じAPIを使用してファイル、メモリ、またはネットワークストリームからのPDFを処理でき、アプリケーションアーキテクチャが簡素化され、コードの保守性が向上します。
RandomAccessInputStreamは、基盤となるデータソース内の現在位置への内部ポインタを維持し、このポインタを操作してデータを読み取るメソッドを提供することで動作します。このクラスは、読み取り位置を移動するseek(long position)、現在位置のバイトを取得するread()、現在の場所を照会するgetPosition()などの主要な操作を実装しています。PDFBoxがPDF文書を解析する際、RandomAccessInputStreamを使用して、まずクロスリファレンステーブル(通常はファイルの終わり近く)を見つけ、次にそのテーブルで参照されているさまざまなオブジェクトの場所にジャンプします。たとえば、
(
Citation: PDF Association, 2023
PDF Association(2023). Retrieved from
https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
)
で説明されているTagged PDFコンテンツにアクセスする場合、パーサーはRandomAccessInputStreamを使用して、文書カタログ、構造ツリールート、個別のコンテンツストリーム間をナビゲートします。このクラスは、PDF処理ワークフローで一般的な、近接するデータ領域への繰り返しアクセス時のパフォーマンスを最適化するために、内部的にバッファリングとキャッシングを処理します。
- PDDocument – ファイルアクセスにRandomAccessInputStreamを使用する、ロードされたPDF文書を表すApache PDFBoxのメインクラス
- COSStream – RandomAccessInputStreamを使用して読み取られるPDFストリームオブジェクトを表すApache PDFBoxクラス
- Cross-Reference Table(クロスリファレンステーブル) – オブジェクト番号をファイル位置にマッピングするPDFファイル構造で、ランダムアクセス読み取りを介してアクセスされる
- RandomAccessRead – RandomAccessInputStreamが実装するインターフェースで、ランダムアクセス操作の契約を定義する
- PDFParser – RandomAccessInputStreamを使用してPDFファイルの低レベル構造を解析するApache PDFBoxクラス
- (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/
