17.05.2014 Views

12 PPS と PDFlib Block Plugin

12 PPS と PDFlib Block Plugin

12 PPS と PDFlib Block Plugin

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>12</strong>.7 pCOS でブロッ ク 名 とプロパティ を 取 得<br />

<strong>PPS</strong> に よ る 自 動 ブ ロ ッ ク 処 理 に 加 えて、 内 蔵 の pCOS 機 能 を 使 う と 、 ブ ロ ッ ク 名 を 評 価 し<br />

た り 、 標 準 ・ カ ス タ ムプ ロパテ ィ を 取 得 し た り する こ と がで き ます。<br />

クックブック 取 り 込 んだPDFの 中 に 含 まれている ブロ ッ クのプロパテ ィ を 取 得 するための 完 全 な コー ド<br />

サンプルがク ッ クブッ クの blocks/query_block_properties トピックにあります。<br />

ブロ ッ クの 数 と 名 前 の 取 得 クライアントコード 側 では、 取 り 込 んだページ 上 のブロッ<br />

ク の 名 前 も 数 も 知 ら な く てかまいません。 なぜな ら 取 得 する こ と も で き る か ら です。 下 記<br />

のステー ト メ ン ト は、 ページ 番 号 pagenum のページ 上 のブロ ッ ク の 数 を 返 し ます :<br />

blockcount = (int) p.pcos_get_number(doc, "length:pages[" + pagenum + "]/blocks");<br />

下 記 のス テー ト メ ン ト は、 ページ pagenum 上 の blocknum 番 目 のブ ロ ッ ク の 名 前 を 返 し<br />

ます (ブ ロ ッ ク と ページの 番 号 は 0 か ら 始 ま り ます) :<br />

blockname = p.pcos_get_string(doc,<br />

"pages[" + pagenum + "]/blocks[" + blocknum + "]/Name");<br />

返 されたブロック 名 はその 後 、 ブロックのプロパティを 取 得 したり、 ブロックへテキス<br />

ト・ 画 像 ・PDF・グラフィック 内 容 を 流 し 込 んだりするために 利 用 することができます。<br />

指 定 さ れたブ ロ ッ ク が 存 在 し ない と きは、 例 外 が 発 生 し ます。 こ れを 避 け る には、 length<br />

接 頭 辞 を 用 いて、ブロ ッ クの 数 を 知 り、ひいては <strong>Block</strong>s 配 列 の 最 大 添 字 を 知 る こ と がで き<br />

ます ( 配 列 の 添 字 が 0 か ら 始 ま る ため、 ブ ロ ッ ク の 数 は 最 大 可 能 添 字 よ り 1 大 き い こ と に<br />

留 意 し て く だ さ い)。<br />

ブ ロ ッ ク プ ロパテ ィ を 特 定 するパス 文 法 において、 以 下 の 表 現 は 等 価 です。 こ こ で、 通<br />

し 番 号 < 番 号 > のブロ ッ クが、その Name プロパティを < ブロック 名 > に 設 定 されている<br />

とします:<br />

pages[...]/blocks[< 番 号 >]<br />

pages[...]/blocks/<br />

ブロ ッ クの 座 標 の 取 得 名 前 foo のブ ロ ッ ク の 左 下 隅 と 右 上 隅 を 記 述 する 2 個 の 座 標 ペア<br />

(llx, lly) および (urx, ury) は、 以 下 の よ う に し て 取 得 で き ます :<br />

llx = p.pcos_get_number(doc, "pages[" + pagenum + "]/blocks/foo/Rect[0]");<br />

lly = p.pcos_get_number(doc, "pages[" + pagenum + "]/blocks/foo/Rect[1]");<br />

urx = p.pcos_get_number(doc, "pages[" + pagenum + "]/blocks/foo/Rect[2]");<br />

ury = p.pcos_get_number(doc, "pages[" + pagenum + "]/blocks/foo/Rect[3]");<br />

上 記 の 座 標 はデフ ォル ト 座 標 系 で 与 え られている こ と に 注 意 し て く ださい ( 左 下 隅 が 原<br />

点 。 ただ し、 そのページの CropBox に よ って 変 更 さ れてい る 可 能 性 も あ り ます)。 こ れに<br />

対 し て <strong>Block</strong> <strong>Plugin</strong> は、 ページ 左 上 隅 に 原 点 を 持 つ Acrobat のユーザーイ ン タ フ ェース 座<br />

標 系 に 従 って 座 標 を 表 示 し ます。 ブ ロ ッ ク の 座 標 に 優 先 させる ための Rect オプシ ョ ンは、<br />

CropBox エン ト リ に よ って 適 用 さ れてい る いかな る 変 更 を も 考 慮 には 入 れないので、 元 の<br />

ブ ロ ッ ク か ら 取 得 さ れた 座 標 は、CropBox が 存 在 する 場 合 には 新 し い 座 標 と し てそのま ま<br />

受 け 渡 す こ と はで き ません。 こ れを 回 避 する には、 refpoint ・ boxsize オプシ ョ ンを 用 いる<br />

ことができます。<br />

また、 topdown オプシ ョ ンはブ ロ ッ ク 座 標 取 得 の 際 には 考 慮 さ れない こ と に も 留 意 し<br />

てください。<br />

<strong>12</strong>.7 pCOS でブロッ ク 名 とプロパテ ィ を 取 得 353

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

Saved successfully!

Ooh no, something went wrong!