コンテンツ操作

コンテンツ操作

PDF ページはコンテンツ ストリームに格納されたオペレータのシーケンスによってレンダリングされます。Aspose.PDF FOSS for .NET は、各 Page 上の OperatorCollection を通じてこれらのオペレータを公開し、プログラムで新しいコンテンツを構築するための ContentStreamBuilder を提供します。


コンテンツストリームオペレータの読み取り

すべての Page には、OperatorCollection を返す Contents プロパティがあります。これを反復処理して各オペレータを検査します。

using var doc = Document.Open(pdfBytes);
var page = doc.Pages[1];

foreach (var op in page.Contents)
{
    Console.WriteLine(op.ToString());
}

コンテンツ ストリームの構築

ContentStreamBuilder は、グラフィックス状態管理、パス構築、テキスト出力、カラー設定を含むコンテンツ ストリーム オペレータ シーケンスを構築するための流暢な API を提供します。

var builder = new ContentStreamBuilder();
builder.SaveState();
builder.SetFillColor(1.0, 0.0, 0.0);  // Red fill
builder.SetMatrix(1, 0, 0, 1, 72, 700); // Translate
// ... add drawing or text operators
builder.RestoreState();

グラフィックス状態

GraphicsState は、演算子が実行される際に現在の変換行列、テキスト状態、カラー値を追跡します。主な操作は次のとおりです:

var gs = new GraphicsState();
gs.Save();
gs.ConcatMatrix(new Matrix(1, 0, 0, 1, 100, 200));
gs.Restore();

カラー演算子

SetColor と SetColorStroke はそれぞれ塗りと線の色を設定します。RGB、CMYK、またはグレースケールの成分を受け付けます。

// RGB fill color (blue)
var fill = new SetColor(0, 0, 1);

// RGB stroke color (red)
var stroke = new SetColorStroke(1, 0, 0);

テキスト演算子

ShowText は、グラフィックス状態から取得した現在のフォントとサイズを使用して、現在のテキスト位置にテキスト文字列を描画します。

var textOp = new ShowText("Hello, PDF!");

SetTextMatrix は、テキスト空間用の変換行列を定義することでテキストの位置を決めます。


拡張グラフィックス状態

ExtGState は、塗りと線のアルファ(透明度)やブレンドモードなどの高度な描画プロパティを制御します。


ヒントとベストプラクティス

  • グラフィックス状態スタックが破損しないよう、常に SaveState / RestoreState(または q / Q 演算子)をペアにしてください。
  • 演算子オブジェクトを手動で構築するのではなく、新しいコンテンツには ContentStreamBuilder を使用してください。
  • 変更する前に OperatorCollection を読み取り専用で検査してください — 予期しない演算子シーケンスがレンダリングの問題を引き起こす可能性があります。
  • カラー演算子は現在のカラースペース(RGB、CMYK、またはグレースケール)と一致しなければなりません。
  • パターンおよび ICC ベースのカラースペースには SetAdvancedColor を使用してください。

一般的な問題

問題原因修正
演算子を追加した後、テキストが表示されませんテキスト状態でフォントが設定されていませんShowText の前に SetFont 演算子を追加してください
色が正しく表示されませんカラースペースの不一致 (RGB と CMYK)アクティブなカラースペースに一致する演算子を使用してください
グラフィックス状態スタックがオーバーフローしました不均衡な Save / Restore ペアすべての SaveState に対応する RestoreState があることを確認してください
コンテンツが誤った位置に表示されます行列変換が欠落しているか、正しくありませんSetMatrix または ConcatMatrix の値を確認してください

FAQ

PDF コンテンツストリームとは何ですか?

コンテンツストリームは、ページの描画方法を記述するオペレーターのシーケンスです — パスの描画、テキストの配置、カラーの設定、グラフィックス状態の管理を行います。

既存のページに新しいコンテンツを追加できますか?

はい。page.Contents にアクセスして新しいオペレーターを追加するか、ContentStreamBuilder を使用してシーケンスを構築し、末尾に追加してください。

テキストを透明にするにはどうすればよいですか?

ExtGState を使用して、塗りつぶしアルファ(ca)を 0(完全に透明)から 1(完全に不透明)までの値に設定します。


API Reference 概要

クラス / メソッド説明
OperatorCollectionページ上のコンテンツストリーム演算子のシーケンス
ContentStreamBuilder演算子シーケンスを構築するための流暢なビルダー
ContentStreamBuilder.SaveState現在のグラフィックス状態をスタックにプッシュする
ContentStreamBuilder.RestoreStateスタックからグラフィックス状態をポップする
ContentStreamBuilder.SetFillColor現在のカラースペースで塗りつぶし色を設定します
ContentStreamBuilder.SetMatrix座標変換を適用する
GraphicsState変換行列、色、テキスト状態を追跡する
SetColor非ストローク(塗り)カラーを設定する演算子
SetColorStrokeストロークカラーを設定するオペレーター
SetAdvancedColorパターン / ICCベースのカラースペース用オペレーター
ShowTextテキスト文字列をレンダリングするオペレーター
SetTextMatrix行列でテキストの位置を指定するオペレーター
ExtGState拡張グラフィックス状態(アルファ、ブレンドモード)

参照

 日本語