コンテンツストリーム内では、PDFが理解できるさまざまなグラフィックオブジェクトの組み合わせを作成できます。この記事で取り上げるのはパスオブジェクトです。パスオブジェクトは基本的に点のリストです。各パスオブジェクトには始点があり、新しい点がリストに追加されます。パスの各セグメントは直線、曲線、または長方形である可能性があります。点の集合は一つのパスオブジェクトとして扱われます。なぜなら、適用するペインティング操作がパスの全セグメントに適用されるからです。
例えば:
175 720 m 175 50 l h S
上記の行には3つのコマンドが含まれています。「m」は指定された座標でパスを開始することを意味します。「l」コマンドは、パスの前の点から座標175, 50への線分を描画します。「h」コマンドはパスを閉じます。パスを設定したら、何かしらのペインティングコマンドを与えてアクションを実行しなければなりません。「S」コマンドはパスに沿って線を描画します。
175 720 m 175 700 l 300 800 400 720 v h S
これには「v」コマンドが追加されており、曲線を描画します。最初の2つの座標は制御点で、線の曲がり具合を設定し、次の2つの座標は線の終点です。
175 720 m 175 700 l 300 800 400 600 v 100 650 50 75 re h S
「re」コマンドは、座標100, 650に幅50、高さ75の長方形を描画します。この長方形はパスに物理的に接続されていませんが、同じパスの一部として扱われ、最後に適用されるペインティング操作(S)は全体に適用されます。
以下が完成したコードです:
%PDF-2.0
% カタログオブジェクト
1 0 obj
<>
endobj
% ページツリーオブジェクト
2 0 obj
<>
endobj
% ページオブジェクト
3 0 obj
<>
endobj
% コンテンツストリームオブジェクト
4 0 obj
<>
stream
175 720 m % 移動
175 500 l % 直線
300 800 400 600 v % 曲線
100 650 50 75 re % 四角形
h % 最後の点を最初の点に接続
S % ストローク
endstream
endobj
% クロスリファレンステーブル
xref
0 5
0000000000 65535 f
0000000010 00000 n
0000000059 00000 n
0000000140 00000 n
0000000202 00000 n
% トレーラー
trailer
<>
% クロスリファレンステーブルの開始位置
startxref
598
%%EOF
上記のコードを draw-line.pdf ファイルとして保存し、PDFビューアーで開くと、数本の線と一つの長方形が表示されるはずです。現時点では見た目は単調かもしれませんが、次の記事ではパスを塗りつぶすさまざまな方法について見ていきます。
PDFアプリ開発ツール(SDK)をお探しのみなさま、効率のよい開発作業のためにJPedal、BuildVu、JDeliがきっとお役に立つことと思います。
これら3製品は無料で試用していただけますので、まずはお試しのうえ、ぜひ導入をご検討ください。
JPedal、BuildVu、JDeliのシステム開発やプログラミング、無料トライアルの情報は下記の各製品のトライアルページをご覧ください。技術的なことから費用面まで、ご質問・ご相談も各製品ページの問合せボタンからお寄せください。