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