コンテンツ ストリーム演算子
このガイドでは、ContentStreamParser と ContentStreamBuilder を使用して、Aspose.PDF FOSS for Java における PDF コンテンツストリーム演算子へのアクセスと操作方法を示します。生のページコンテンツバイトを読み取り、パーサーを使用して描画コマンドを検査する方法を学びます。
コンテンツストリーム
PDF ページのコンテンツは、コンテンツストリーム内の演算子のシーケンスとしてエンコードされます。各 Page は、getContents() プロパティを介してそのコンテンツ演算子へのアクセスを提供します。
ContentStreamParser
ContentStreamParser は、生のコンテンツストリームバイトを演算子オブジェクトに解析し、ページの描画コマンドをプログラム的に検査できるようにします。page.getContents().toByteArray() から取得した生バイトをパーサーのコンストラクタに渡します:
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)が含まれます。
コンテンツストリームの演算子は PDF 仕様書(ISO 32000-1:2008、§8)に従います。ContentStreamParser を使用して既存のストリーム内の演算子を反復処理します。
ページの生コンテンツへのアクセス
ページコンテンツストリームの生バイトを読み取るには、page.getContents().toByteArray() を呼び出します。そのバイトは検査、デコード、または ContentStreamParser に渡すことができます:
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");
}