Java でコンテンツ ストリーム オペレーターを扱う方法

Java でコンテンツ ストリーム オペレーターを扱う方法

このガイドでは、Aspose.PDF FOSS for Java におけるページコンテンツストリームの解析と構築方法を示します。生のページバイトを読み取り、ContentStreamParser で解析し、ContentStreamBuilder を使用して新しいコンテンツを作成する方法を学びます。

コンテンツストリームにアクセスする

各 Page は Document 内で、グラフィカルコンテンツをコンテンツストリームに保持しています。ストリームには、テキスト位置指定、描画コマンド、リソース参照を定義する PDF オペレーターのシーケンスが含まれます。ページから生のコンテンツストリームバイトを読み取ります:

try (Document doc = new Document("input.pdf")) {
    PageCollection pages = doc.getPages();
    Page page = pages.get(1);
    byte[] contentBytes = page.getContents().toByteArray();
    System.out.println("Content stream size: " + contentBytes.length + " bytes");
}

ContentStreamParser で解析する

ContentStreamParser はコンテンツストリームをトークナイズし、オペレーターオブジェクトに解析します。これにより、ストリーム内の各描画コマンドを検査できるようになります:

try (Document doc = new Document("input.pdf")) {
    PageCollection pages = doc.getPages();
    Page page = pages.get(1);
    byte[] contentBytes = page.getContents().toByteArray();
    ContentStreamParser parser = new ContentStreamParser(contentBytes);
    // Iterate over parsed operators
}

ContentStreamBuilder で構築する

ContentStreamBuilder は Page に埋め込むための新しいコンテンツストリームを作成します。既存のストリームを変更するのではなく、プログラムでページコンテンツを構築する場合は ContentStreamBuilder を使用してください。ストリームを作成したら、ページに割り当ててドキュメントを保存します。

演算子リファレンス

PDF コンテンツストリームの演算子は ISO 32000-1:2008、表 A.1 で定義されています。一般的な演算子は次のとおりです:

  • テキスト演算子: BT, ET, Tf, Tj
  • グラフィックス状態演算子: q, Q, cm
  • パス演算子: m, l, h, f, S

参照

 日本語