 |
|
ブロック出力
PHP コード
ブロックを含んでいる PDF ページを入力して、処理します。
ブロックは pCOS インターフェースによって検索されます。
また、ブロックの機能は出力ページのブロックを視覚化するために使用されます。
実際のアプリケーションでは、外部のデータソースから取得したデータで
ブロックを埋めることになるでしょう。
使用するソフトウェア:PPPS 7 もしくはそれ以上
使用するデータ:PDF入力ファイル
<?php
/* データファイルの場所です。必要なように適合させます */
$searchpath = "../data";
$infile = "boilerplate.pdf";
$p = new PDFlib();
#load_font()等からの戻り値を調べなければいけないことを表しています
$p->set_parameter("errorpolicy", "return");
$p->set_parameter("SearchPath", $searchpath);
/* テキストフォーマットに"utf8"を使用し、
* Unicodeのエンコードを許可します。
*/
$p->set_parameter("textformat", "utf8");
if ($p->begin_document("", "") == 0) {
die("Error: " . $p->get_errmsg());
}
$p->set_info("Creator", "PDFlib starter sample");
$p->set_info("Title", "starter_block");
/* PDFが含まれている各ブロックを開きます */
$indoc = $p->open_pdi_document($infile, "");
if ($indoc == 0) {
die("Error: " . $p->get_errmsg());
}
/* 初めのページを開きます */
$page = $p->open_pdi_page($indoc, 1, "");
if ($page == 0) {
die("Error: " . $p->get_errmsg());
}
$width = $p->pcos_get_number($indoc, "pages[0]/width");
$height = $p->pcos_get_number($indoc, "pages[0]/height");
$p->begin_page_ext($width, $height, "");
/* 読み込みページを出力ページ上に配置します */
$p->fit_pdi_page($page, 0, 0, "");
$blockcount = $p->pcos_get_number( $indoc,
"length:pages[0]/PieceInfo/PDFlib/Private/Blocks");
if ($blockcount == 0) {
die("Error: " . $infile . "does not contain any PDFlib blocks");
}
/* ページ上に全てのブロックをループします */
for ($i = 0; $i < $blockcount; $i++) {
/* 最初のページ上の$i番目のブロックの名前とタイプを取得します。
* (テキスト/イメージ/PDF の一つ)
*/
$blockname = $p->pcos_get_string( $indoc,
"pages[0]/PieceInfo/PDFlib/Private/Blocks[" . $i . "]/Name");
$blocktype = $p->pcos_get_string( $indoc,
"pages[0]/PieceInfo/PDFlib/Private/Blocks[" . $i . "]/Subtype");
/* 全てのテキストブロックを視覚化します */
if ($blocktype == "Text") {
$optlist = "fontname=Helvetica encoding=unicode " .
"fillcolor={rgb 1 0 0} " .
"bordercolor={gray 0} linewidth=0.25";
/* 中身としてブロック名を簡単に使います */
if ($p->fill_textblock(
$page, $blockname, $blockname, $optlist) == 0) {
print("Warning: " . $p->get_errmsg());
}
}
}
$p->end_page_ext("");
$p->close_pdi_page($page);
$p->end_document("");
$p->close_pdi_document($indoc);
/* PDFデータをバッファから取り出す */
$buf = $p->get_buffer();
$len = strlen($buf);
/* httpヘッダを生成する */
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=starter_block.pdf");
print $buf;
$p->delete();
?>
|
| PHP5.1.2/PDFlib 7.0.0 |
|
(Dec 18, 2006)