RandomAccessBuffer
RandomAccessBufferは、Apache PDFBoxライブラリにおけるクラスで、ランダムアクセス機能を備えたPDFデータの読み書きを行うためのインメモリバッファ実装を提供します。
RandomAccessBufferは、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文書を扱う際の柔軟性が向上します。特に、ファイルシステムへの依存を避けてPDF処理を行う必要がある場合や、ストリーミングデータを扱う場合に有用です。
RandomAccessBufferは、Apache PDFBoxにおけるRandomAccessReadインターフェースとRandomAccessWriteインターフェースの具体的な実装です。このクラスは、PDFデータをメモリ内に格納するサイズ変更可能なバイト配列バッファを管理し、バッファ内の任意の位置へのシーケンシャルアクセスとランダムアクセスの両方を可能にします。ファイルベースのランダムアクセス実装(RandomAccessReadBufferedFileなど)とは異なり、RandomAccessBufferはすべてのデータをRAM内に保持するため、ディスクバックの代替手段とは明確に区別されます。このクラスは、データの書き込みに応じてバッファを自動的に拡張し、増大するPDFコンテンツに対応するためにメモリ割り当てを動的に管理します。生のバイトデータとPDFBoxの文書解析・生成メカニズムの橋渡し役として機能し、物理的なファイルストレージを必要とせずにPDF構造を扱うことを可能にします。
PDF生成と操作を行う開発者にとって、RandomAccessBufferは処理中のPDFデータの扱い方において重要な柔軟性を提供します。ファイルシステムへの依存を排除することで、アプリケーションの移植性が向上し、ディスクアクセスが制限されている、または遅い可能性のあるコンテナ化環境やサーバーレス環境に適したものになります。インメモリアプローチは、ディスクI/Oのオーバーヘッドを回避することで、小~中規模のPDFに対するパフォーマンスを大幅に改善します。これは、自動化された文書生成やリアルタイムのPDF操作といった高スループットのシナリオで特に有益です。さらに、RandomAccessBufferは、一時ファイルやクリーンアップ操作を管理することなく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を作成する際に特に重要になります。その場合、文書要素を適切に構造化するために複数の読み書き操作が必要になることがあります。
RandomAccessBufferは、データの書き込みに応じて動的に拡張する内部バイト配列を維持します。開発者がクラスをインスタンス化すると、使用されたコンストラクタに応じて、空のバッファまたは事前割り当てされたバッファから開始されます。このクラスは、特定の位置へのシーク、シーケンシャルまたはランダムな位置でのバイトの読み取り、バッファ内の任意の位置へのデータ書き込みを行うメソッドを実装しています。書き込み位置が現在のバッファ容量を超えると、RandomAccessBufferは自動的により大きな配列を割り当て、既存のデータをコピーして連続性を維持します。シーク操作は、次の読み取りまたは書き込み操作が発生する位置を決定する内部ポインタを更新します。これは従来のファイルI/Oにおけるファイルポインタ操作に似ています。PDFBoxは、バイト配列からPDF文書を解析する際、またはファイルではなく出力ストリームに書き込まれるPDFを生成する際に、内部的にRandomAccessBufferを使用します。開発者は、PDF読み込みメソッドにRandomAccessBufferインスタンスを渡すか、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文書の複雑な構造をサポートしており、相互参照テーブル、オブジェクトストリーム、ランダムアクセスパターンを必要とする増分更新などが含まれます。
- RandomAccessRead – PDFデータへのランダムアクセス読み取り操作を定義するインターフェース
- RandomAccessReadBufferedFile – ディスクからPDFデータを読み取るためのファイルベース実装
- COSDocument – PDF文書の内部構造を表すPDFBoxのコアクラス
- PDDocument – PDF文書を扱うための高レベルPDFBoxクラス
- InputStream – シーケンシャルなバイトストリームを読み取るためのJavaインターフェース(ランダムアクセスアプローチとの対比)
- (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
