PDFlib

高度なPDFアプリケーションの開発を支援する定番プログラムライブラリー Supported by インフォテック株式会社

入門 9 - PDI による PDF の取り込み -

PDFlib+PDIは既存のPDF文書を取り込み(import)、これに新規のPDFオブジェクトを重ねて出力する機能です。PDFlib+PDIにより以下のような処理を行うことができます。

  • 複数のPDF文書から複数のページを取り出し重ね合わせる
  • PDFページをクリップしたり、拡大縮小する
  • 単一のシートに複数ページを配置する
  • 既存のページにフッター、ヘッダー、ページなどのテキスト、ロゴなどのイメージを追加する

PDFlib+PDIの機能を使うためには、PDFlib+PDIのライセンスを購入する必要があります。

PDFlib+PDIで取り込まれるPDFページは、デフォルトではテキストやグラフィック要素などの実質的なコンテンツのみを取り込みます。注釈やフォームフィールドを取り込む場合、optlist で明示する必要があります。また取り込まれた個々のPDF要素を操作して変更することもできません。取り込まれたPDFページは、イメージデータあるいはバックグラウンドのように取り扱われます。

ここでは、名刺を例にしてPDFlib+PDIの使用方法を説明します。名刺は、会社ロゴのように固定の部分と氏名や所属のように人により異なる要素から構成されます。ここでは、会社ロゴ、住所、ホームページアドレスなどが固定されると仮定し、取り込むPDFファイルをMS Wordで作成しAcrobatによりPDFファイルに変換します(下図のA参照)。

このファイルを取り込み、役職、氏名、電話番号、FAX番号およびメールアドレスを書き加えるスクリプトの主要部は以下のようになります。


  $infile="../data/meishi-in.pdf";
  $doc = $p->open_pdi_document($infile, "");   //取り込むPDF文書を開く
  if ($doc == 0) {
    die("Error: " . $p->get_errmsg());
  }

  $page = $p->open_pdi_page($doc, 1, "");      //1ページ目を開く
  if ($page == 0) {
    die("Error: " . $p->get_errmsg());
  }

  $p->begin_page_ext(20.0, 20.0, "");          //ページの開始

  $p->fit_pdi_page($page, 0, 0, "adjustpage"); //取込みページの配置
  $p->close_pdi_page($page);                   //取込みページを閉じる

  $p->set_option("searchpath=resource/fonts");
  $p->set_option("FontOutline={MS-Gothic=msgothic.ttc")
  $font1 = $p->load_font("MS-Gothic", "unicode", "");
  $p->set_option("FontOutline={MS-Mincho=msmincho.ttc")
  $font2 = $p->load_font("MS-Mincho", "unicode", "");

  $text = "営業部 主任";        //テキストをセット

  $p->setfont($font1, 8.0);      // フォント及びサイズを指定
  $p->set_text_pos(75.0, 93.5);  // テキストの位置を指定
  $p->show($text);               // テキストを出力

  $text = "山 田 太 郎";         //テキストをセット

  $p->setfont($font2, 16.0);     // フォント及びサイズを指定
  $p->set_text_pos(75.0, 76.5);  // テキストの位置を指定
  $p->show($text);               // テキストを出力

  $p->setfont($font, 8.0);      // フォント及びサイズを指定
  $p->set_text_pos(91.0, 34.0);  // テキストの位置を指定
  $p->show("TEL 03-1234-1111");  // テキストを出力
  $p->continue_text("FAX 03-1234-1112");
  $p->continue_text("E-Mail taro_yamada@powerup.kk.jp");

  $p->end_page_ext("");          // ページを終了する
PHP 8 / PDFlib 10
図 PDFlib+PDIによる名刺の作成
(Nov 10, 2006 - Dec 6, 2021)