Skip to main content
Interwork Corporation
IDR Solutions Product Support Portal
PDF開発用語集 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動

RandomAccessRead

RandomAccessReadは、Apache PDFBoxライブラリにおけるインターフェースで、シーケンシャルなデータソースへのランダムアクセスを提供し、任意の位置でPDFファイルコンテンツを効率的に読み取ることを可能にします。

キーワード: randomaccessread, RandomAccessRead

概要

RandomAccessReadは、Apache PDFBoxライブラリにおけるインターフェースで、シーケンシャルなデータソースへのランダムアクセスを提供し、任意の位置でPDFファイルコンテンツを効率的に読み取ることを可能にします。このインターフェースは、PDF仕様 ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) に従って構造化されたPDF文書を解析・処理するPDFBoxの基盤となっています。RandomAccessReadを使用することで、開発者は文書全体をメモリに読み込むことなくPDFファイル構造をナビゲートできるため、大規模または複雑なPDFファイルを扱う際に不可欠な機能となります。

定義

RandomAccessReadは、データソース内の任意の位置からバイトを読み取るメカニズムを抽象化するJavaインターフェースです。特定のバイトオフセットへのシーク、単一バイトまたはバイト配列の読み取り、基盤となるデータストリームの現在位置と長さの照会を行うメソッドを提供します。このインターフェースはPDFBoxのファイルアクセス層の基盤として機能し、ファイルベースアクセス、メモリマップドアクセス、バッファベースアクセスなど、さまざまな実装をサポートします。前方にのみ読み取り可能なシーケンシャル入力ストリームとは異なり、RandomAccessReadはPDFコンテンツ内を前後にナビゲートすることができます。これは、PDFファイルにはファイル構造内の任意の場所を指す相互参照テーブルやオブジェクト参照が含まれているため、極めて重要な機能です。

重要性

JavaアプリケーションでPDF処理を行う開発者にとって、RandomAccessReadの理解は以下の理由から重要です。第一に、ファイル全体をメモリに読み込むのではなく、必要な部分のみを選択的に読み取ることで、大規模なPDF文書のメモリ効率的な処理を実現します。第二に、クラウドストレージからのPDF読み取り、暗号化ストリーム、カスタムキャッシュメカニズムなど、カスタムデータソースを実装する柔軟性を提供します。第三に、効率的なランダムアクセスは、インクリメンタル更新、デジタル署名、PDF/UA ( Citation: N.A., (N.A.). (). 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処理アプリケーションのパフォーマンス最適化は、多くの場合、RandomAccessRead実装の適切な使用に依存しています。

仕組み

RandomAccessReadインターフェースは、柔軟なファイルアクセスを提供するために連携して動作する複数の主要メソッドを定義しています。seek(long position)メソッドは、読み取りポインタをデータソース内の特定のバイトオフセットに移動させ、read()は現在位置の単一バイトを取得してポインタを進めます。バルク操作には、read(byte[] buffer, int offset, int length)を使用して複数のバイトをバッファに読み込みます。getPosition()メソッドは現在の読み取りポインタの位置を返し、length()はデータソースの総サイズを提供します。PDFBoxが ( Citation: N.A., (N.A.). (). 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 PDF構造 ( Citation: , (). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) を解析する際、PDFBoxはRandomAccessReadを使用して、シーケンシャルなトラバースを行うことなく、文書カタログ、構造ツリー、コンテンツストリーム間をジャンプします。実装では、基盤となるリソースの適切なクローズや、同時アクセスシナリオにおけるスレッドセーフティの考慮など、リソース管理を慎重に処理する必要があります。

関連用語

  • PDFParser – RandomAccessReadを使用してPDFファイル構造を解析し、文書オブジェクトモデルを作成するApache PDFBoxクラス
  • COSDocument – RandomAccessReadを通じてデータを読み取ることで構築される、PDF文書の低レベル構造を表すPDFBoxの表現
  • RandomAccessBuffer – 高速アクセスのためにPDFデータをRAMに格納する、RandomAccessReadのメモリベース実装
  • RandomAccessFile – ディスクストレージから直接読み取る、RandomAccessReadのファイルベース実装
  • Cross-Reference Table(相互参照テーブル) – オブジェクト番号をバイトオフセットにマッピングするPDF構造で、効率的な検索にはランダムアクセスが必要

出典

(N.A.) (2020)
(N.A.). (). 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)
(). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
(N.A.) (2014)
(N.A.). (). 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