12 PPS 㨠PDFlib Block Plugin
12 PPS 㨠PDFlib Block Plugin
12 PPS 㨠PDFlib Block Plugin
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>12</strong>.8 ブロックをプログラム 的 に 生 成 ・ 取 り 込 み<br />
<strong>12</strong>.8.1 <strong>PDFlib</strong> ブロックを POCA で 生 成<br />
<strong>PDFlib</strong> ブ ロ ッ ク は、<strong>PPS</strong> に 内 蔵 さ れてい る POCA イ ン タ フ ェースでプ ロ グ ラ ム 的 に 生 成 す<br />
る こ と も 可 能 です。 POCA を 用 い る と 、 ブ ロ ッ ク のために 必 要 な PDF データ 構 造 を 作 成<br />
したうえで、PDF_begin/end_page_ext( ) の blocks オプシ ョ ンに 与 える こ とができ ます。 ブ<br />
ロ ッ ク 定 義 を 作 成 する 際 には、 357 ページ 「<strong>12</strong>.9 <strong>PDFlib</strong> ブ ロ ッ ク の 仕 様 」 の 要 請 に 従 う 必<br />
要 があ り ます。 ブ ロ ッ ク プ ロパテ ィ は、 340 ページ 「<strong>12</strong>.6 ブ ロ ッ ク のプ ロパテ ィ 」 に 挙 げ<br />
たデータ 型 に 従 って 作 成 する 必 要 があ り ます。<br />
クックブック <strong>PDFlib</strong> ブロックを <strong>PPS</strong> で 作 成 するためのコードサンプルが <strong>PDFlib</strong> クックブックのblockhandling-and-pps<br />
カテゴリにあります。<br />
<strong>PDFlib</strong> ブ ロ ッ ク の 仕 様 には、 1 つのブ ロ ッ ク の 名 前 が 2 回 記 録 さ れてい る と い う 残 念 な 冗<br />
長 性 があ り ます。 ページの メ イ ン <strong>Block</strong>s 辞 書 内 に 1 回 と 、 特 定 のブ ロ ッ ク 辞 書 内 の Name<br />
項 目 に も う 1 回 です。 こ の 2 個 の 名 前 は、 そのブ ロ ッ ク に <strong>PPS</strong> で 流 し 込 みを 行 う 際 や、 そ<br />
のブ ロ ッ ク を <strong>Block</strong> <strong>Plugin</strong> でプレ ビ ューする 際 に 問 題 が 起 こ る こ と を 避 け る ために、 同 一<br />
でなければな り ません。 PDF_begin/end_page_ext( ) はそのため、 blocks オプシ ョ ンで 与 え<br />
られた 辞 書 がこの 「 同 一 ブロ ッ ク 名 」 規 則 に 違 反 するブロ ッ ク 定 義 を 含 んでいる 場 合 に<br />
は、 例 外 を 発 生 さ せます。 下 記 のコー ド サンプルでは、 対 応 する 対 を 青 色 で 示 し ています。<br />
下 記 のコー ド 断 片 では、357 ページ「ブ ロ ッ ク 辞 書 のキー」で 示 すブ ロ ッ ク 定 義 を POCA<br />
関 数 群 を 用 いて 作 成 する 様 子 を 演 示 し ています :<br />
/* ブロック 辞 書 を 作 成 */<br />
blockdict = p.poca_new("containertype=dict usage=blocks");<br />
/* ---------------------------------------------------------<br />
* テキストブロックを 作 成<br />
* ---------------------------------------------------------<br />
*/<br />
textblock = p.poca_new("containertype=dict usage=blocks type=name key=Type value=<strong>Block</strong>");<br />
container1 = p.poca_new("containertype=array usage=blocks " +<br />
"type=integer values={70 640 300 700}");<br />
p.poca_insert(textblock, "type=array key=Rect value=" + container1);<br />
p.poca_insert(textblock, "type=name key=Name value=job_title");<br />
p.poca_insert(textblock, "type=name key=Subtype value=Text");<br />
p.poca_insert(textblock, "type=name key=fitmethod value=auto");<br />
p.poca_insert(textblock, "type=name key=fontname value=Helvetica");<br />
p.poca_insert(textblock, "type=float key=fontsize value=<strong>12</strong>");<br />
/* このブロックをページのブロック 辞 書 内 に 挿 入 */<br />
p.poca_insert(blockdict, "type=dict key=job_title direct=false value=" + textblock);<br />
/* ---------------------------------------------------------<br />
* 画 像 ブロックを 作 成<br />
* ---------------------------------------------------------<br />
*/<br />
imageblock = p.poca_new("containertype=dict usage=blocks " +<br />
"type=name key=Type value=<strong>Block</strong>");<br />
container2 = p.poca_new("containertype=array usage=blocks " +<br />
<strong>12</strong>.8 ブロ ッ ク を プ ログ ラム 的 に 生 成 ・ 取 り 込 み 355