カタログ構造 🔗
PDFのボディー部はカタログ(Catalog)を頂点とするツリー構造になっている。
ページツリー(Pages)には各ページ(Page)の配列を持っている。
ページにはフォントや画像などのリソース情報と、コンテンツ内容(Contents)を持っている。
graph TD;
Catalog --> Pages;
Pages --> Page1["Page[1]"];
Pages --> Page2["Page[2]"];
Pages --> Page3["Page[3]"];
Page1 --> Contents1["Contents"];
Page2 --> Contents2["Contents"];
Page3 --> Contents3["Contents"];
1ページのみ、白紙のPDFのサンプルは次のようになる。
コンテンツストリーム 🔗
コンテンツにはストリームでページの内容が記載される。
スタックベースのコマンド後置き記法が使用される。
%以降がコメントとなる。
座標は左下を(0,0)とする。(数学の座標と同じ)
テキスト描画 🔗
BTとETで囲んだ間にテキスト描画オペレータを記述する。
BT
/F0 10 Tf % フォント/F0をサイズ10で指定
100 200 Td % 左から100、下から200の位置にテキスト描画位置をセット
(Hello World) Tj % "Hello World"を描画
ET
PicoPDFではOpenTypeフォントをGID指定するため、Tjオペレータで指定するのはGIDになる。
パス描画 🔗
qとQで囲んだ間にパス描画オペレータを記述する。
q
0 0.5 1 RG % 前景色をR=0、G=0.5、B=1で設定する、カラーコードであれば#0080FFである
1 w % 線の幅を1にする
100 200 m % 左から100、下から200の位置に描画位置をセット
25 50 l % 相対位置を左から25、下から50に移動しラインを設定
S % ラインを描画
Q