17.05.2014 Views

12 PPS と PDFlib Block Plugin

12 PPS と PDFlib Block Plugin

12 PPS と PDFlib Block Plugin

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!