begin_document("", ""); /* 文書の作成者やタイトル等、文書情報フィールドを設定する */ $p->set_info("Creator", "dynamicsign.php"); $p->set_info("Author", "Rainer Plockl"); $p->set_info("Title", "Dynamic signature visualization document"); /* APDF 文書ページを開く */ $p->begin_page_ext(300, 50, ""); * C署名用のテキストを出力する */ $timebuf = sprintf("Digitally signed %s %d, %d at %02d:%02d:%02d", $months[localtime()[4]], localtime()[3], localtime()[5]+1900, localtime()[2], localtime()[1], localtime()[0]); $textoptlist =sprintf( "fontsize=10 fontname=Helvetica " . "encoding=unicode textformat=utf8 fillcolor=red"); $p->fit_textline($timebuf, 10, 10, $textoptlist); /* DPDF ページを閉じる EPDF 文書を閉じる  */ $p->end_page_ext(""); $p->end_document(""); /* Fメモリ内にある PDF 文書データを取得 */ $contents = $p->get_buffer(); /* ----------- ステップ2 : PLOP DS を用いて文書に署名します ---------- */ /* PLOP オブジェクトを作成する */ $plop = new PLOP(); /* 読み込みたいファイルの入ったディレクトリを指定する */ $plop->set_option("searchpath={{$searchpath}}"); /* GPVF(PDFlib Virtual File System )ファイルを生成する */ $plop->create_pvf("/pvf/visdoc.pdf", $contents, ""); /* H電子署名を付与したい既存のPDF文書を開く */ if (($doc = $plop->open_document($infile, "")) == 0) { die("Error: " . $plop->get_apiname() . ": " . $plop->get_errmsg() . "\n"); } /* IPVFファイルを開く */ if (($visdoc = $plop->open_document("/pvf/visdoc.pdf", "")) == 0) { die("Error: " . $plop->get_apiname() . ": " . $plop->get_errmsg() . "\n"); } /* 基本となる署名オプションに field オプションを加える */ $optlist = sprintf("%s field={visdoc=%d rect={10 10 adapt adapt}} ", $sign_opts, $visdoc); /* J電子署名を作成する */ if ($plop->prepare_signature( $optlist) == 0) { die("Error: " . $plop->get_apiname() . ": " . $plop->get_errmsg() . "\n"); } /* K電子署名を PDF に付与して出力する */ if ($plop->create_document("", "input=" . $doc) == 0) { die("Error: " . $plop->get_apiname() . ": " . $plop->get_errmsg() . "\n"); } $buf = $plop->get_buffer(); $len = strlen($buf); header("Content-type: application/pdf"); header("Content-Length: $len"); header("Content-Disposition: inline; filename=dynamicsign.pdf"); print $buf; /* LPDF文書を閉じる */ $plop->close_document($doc, ""); /* MPVFファイルを削除する */ $plop->close_document($visdoc, ""); if ($plop->delete_pvf("/pvf/visdoc.pdf") == 0) { die("Error: %s\n" . $plop->get_errmsg()); } } catch (PLOPException $e) { die("PLOP exception occurred in dynamicsign sample:\n" . "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " . $e->get_errmsg() . "\n"); } catch (Exception $e) { die($e); } $p = 0;