パーソナルビジネスソフトとお役立ち情報のサイト
PDFlib よくあるご質問
以下では、PDFlibに関してのお問合せのうち、一般的なものと思えるものをまとめてあります。ご不明点がある場合にはメールにて、お問合せください。なおPDFlibの全般的な利用方法については、当ウェブの記事「PDFlib入門」でご紹介していますので、こちらもご参照ください。

なお、本記事は原則として、PDFlib6.0.3 p1を念頭に記述しています。記述内容がバージョンの相違などにより該当しない場合もありますので、あらかじめご了承ください。


[インストール・ライセンスキー]
[製品の機能]
[パッケージ、ライセンス他]

[インストール・ライセンスキー]

Q. PDFlibを試してみようと思うのですが、インストールの方法は何を見ればわかりますか?

A. インストール及び設定方法については、ダウンロードしたPDFlib製品パッケージの中のreadme.txtに記載されています。ご利用になる言語バインディングに対応するreadme.txtを参考にしてください。

たとえば、Windows用パッケージでは、C及びC++バインディングの設定方法は、doc/readme-binary.txt に記述されています。その他の言語バインディングについては、各バインディング用のバイナリー、サンプルプログラム等を収容している /bind 下の各言語ディレクトリー、例えばphpであれば、bind/php/のreadme.txt に設定方法が記載されています。またリファレンスマニュアルの各バインディングの説明中に設定に関する記述があることもありますので、こちらも参照ください。なお、readme.txtの記述は英語となっています。

Q. 購入手続き後、ライセンスキーが送付されてきました。ライセンスキーの適用方法を教えてください。

A. ライセンスキーの適用方法には下記の方法があります。

■スクリプトまたはプログラムで実行時にライセンスキーを指定する方法

下記の様にset_paramater()を使用します。


  $p = new PDFlib();
  $p->set_parameter("license", "...あなたのライセンスキー...");
     .
     .
     .
  $p = 0;
PHP5.1.2/PDFlib 6.0.3 p1


パラメータ license は PDF_new() などによりPDFlibのオブジェクトを初期化した直後に指定することが可能です。

■ライセンスファイルによりライセンスキーを指定する方法

下記のようなテキストファイル(ライセンスファイル)を作成し、ライセンスキーを指定す ることができます。



  PDFlib license file 1.0
  # Licensing information for PDFlib GmbH products
  PDFlib 6.0.3 ...あなたのライセンスキー...


このライセンスファイルには、PDFlibの複数のライセンスをそれぞれ別の行に記述することができます。

次に、ライセンスファイルのパスを下記のいずれかの方法で指定します。

1)下記のように licensefile パラメータをPDF_new() などによりPDFlibのオブジェクトを初期化した直後にただ一度だけ設定します。



  $p = new PDFlib();
  $p->set_parameter("licensefile", "/path/to/license/file");
     .
     .
     .
  $p = 0;
PHP5.1.2/PDFlib 6.0.3 p1



2)下記のようなコマンドで、環境変数 PDFLIBLICENSEFILE を設定します。(設定コマンドは処理系により異なります。)



export PDFLIBLICENSEFILE=/path/to/license/file


(注)/path/to/licennse/fileは、ライセンスファイルへのパスで処理系に応じた記述をする必要があります。

■個別のキーを複数適用する方法

複数のライセンスキーを別々の注文で購入した場合に、これらのキーをライセンスファイルにまとめて指定することにより合計のCPU数のライセンスを適用することができます。この場合、各ライセンスキーを1行ずつ指定します。また関数 PDF_set_parameter() を複数回呼び出して各ライセンスキーを指定することもできます。

■ライセンス適用を一時的に外す方法

ライセンスを適用したPDFlibは、購入したライセンス以外の機能は使用できなくなります。ライセンス適用後に通常使用できない上位のパッケージ機能を評価したい場合には、下記のようにダミーのライセンスキーを適用して全ての機能を使用することができます。この場合は全ての出力に評価版と同様のデモスタンプが表示されます。




  $p = new PDFlib();
  $p->set_parameter("license", "0");
     .
     .
     .
  $p = 0;
PHP5.1.2/PDFlib 6.0.3 p1


(注)本記述は、PDFlib リファレンスマニュアル 「0. PDFlibライセンスキーの適用」をもとにまとめたものです。正式の記述についてはマニュアルを参照してください。

Q. ライセンスキーを適用するとエラーが発生します。対策はありますか?

A. ライセンスキーの適用場所に問題がある可能性があります。ライセンスの設定は、PDFlibオブジェクトを生成した直後、他の関数を呼ぶ前に設定するようにしてください。


  $p = new PDFlib();
  $p->set_parameter("license", "license key");
  $p->begin_document("/sample/sample.pdf", "");
     .
     .
     .
  $p->end_document("");
  $p = 0;
PHP5.1.2/PDFlib 6.0.3 p1



Q. ライセンスを追加購入しました。追加購入したライセンスを適用する方法を教えてください。

A. ライセンスファイルに記載する場合は古いライセンスキーの次の行に追記してください。



  PDFlib license file 1.0
  # Licensing information for PDFlib GmbH products
  PDFlib 6.0.3 first key
  PDFlib 6.0.3 additinal key


set_paramaterを使用してライセンスキーを適用している場合、下記の様にしてください。


  $p = new PDFlib();
  $p->set_parameter("license", "first key");
  $p->set_parameter("license", "additinal key");
     .
     .
     .
  $p = 0;
PHP5.1.2/PDFlib 6.0.3 p1




Q. 現在ライセンスファイルを使用してライセンスキーを適用しています。ライセンス未取得状態のPDFが生成される事があるのですが、対応方法はありますか?

A.特定の環境(Sun Solaris9 + JAVA)で、ファイルハンドルの上限等の原因で、稀にライセンスファイルにライセンスキーを記載しているにも関わらず、ライセンスキーが適用されていない状態でPDF生成がされる事象が報告されています。その場合は、ライセンスファイルでの適用ではなく、set_paramater()関数を使用してライセンスを適用してください。


     p = new pdflib();
     p.set_parameter("license", "license key");
     .
     .
     .
Java 1.4/PDFlib 6.0.3 p1




[製品の機能]

Q. 古いバージョンの Acrobat Reader を使用しているユーザーがいます。古いバージョンの Acrobat Reader で開けるPDFファイルを生成できますか?

A. 主たる対応バージョンは、PDF 1.5となりますが、Acrobat Reader 4.0 以降用のPDFであれば生成可能です。生成可能なPDFのファイルバージョンは下記の通りです。


PDFバージョンソフトウェアバージョン
PDF 1.3Acrobat Reader 4.0
※一部、利用できる機能に制限があります。
PDF 1.4Acrobat Reader 5.0
PDF 1.5Adobe Reader 6.0
PDF 1.6Adobe Reader 7.0
基本的な機能が動作することがPDFlib社により確認されています。


PDF_begin_document( ) のcompatibility オプションを指定する事により、指定したバージョンでのPDFファイルの出力が可能です。 例えば、Acrobat Reader 4.0 ユーザー用にPDF1.3で出力する場合、下記の様に指定します。


  $p = new PDFlib();
  $p->begin_document("/sample/sample.pdf", "compatibility=1.3");
     .
     .
     .
  $p->end_document("");
  $p = 0;
PHP5.1.2/PDFlib 6.0.3 p1


但し下記の条件があります。
  1. PDIやPPSでファイルを読み込んでPDFを生成する場合、読み込むPDFファイルは、出力しようとしているPDFファイルのファイルバージョンと同じか、より古いバージョンでなけばならない。
  2. 指定したPDFフォーマットでサポートされていない機能を使用する事は出来ない。
PDF各バージョンのサポート状況の詳細については、リファレンスマニュアルの「7.1 いろいろなAcrobat・PDFバージョン」を参照してください。

Q. 印刷所にPDF/X形式で入稿する必要があります。PDF/X形式のファイル出力は可能ですか?

A. 可能です。PDFlibでは下記のPDF/X 形式のファイルを出力可能です。


PDF/Xバージョン ISO PDFバージョン
PDF/X-1:2001
PDF/X-1a:2001
ISO 15930-1 PDF 1.3
PDF/X-3:2002 ISO 15930-3 PDF 1.3
PDF/X-1a:2003 ISO 15930-4 PDF 1.4
PDF/X-2:2003 ISO 15930-5 PDF 1.4
PDF/X-3:2003 ISO 15930-6 PDF 1.4


PDF/X出力する場合、ファイルの特性上、下記の処理が必要になります。
  1. フォントの埋め込み
  2. 画像は実画像を埋め込む
  3. 出力フォーマットに応じたPDFフォーマットの選択
また、文書情報の設定等も必要になります。詳しくはPDFlibに同梱されているマニュアルをご参照下さい。

Q. 生成したPDFファイルをWebで公開することを検討しています。Web用PDFは作成可能ですか?

A. 可能です。Web用PDFにはいくつかの呼び方がありますが、PDFlibでは線形化PDFと呼んでいます。線形化はPDF_begin_document( ) のlinearize オプションで行うことができます。



  $p = new PDFlib();
  $optlist = sprintf("linearize=true "); 
    ↑線形化を行う指定をします。
  $optlist .= sprintf("inmemory=true "); 
    ↑線形化処理メモリ内で行う為の指定です。
  $p->begin_document("/sample/sample.pdf", $optlist);
     .
     .
     .
  $p->end_document("");
  $p = 0;
PHP5.1.2/PDFlib 6.0.3 p1


Web用PDFを有効に利用する為には、下記の制限があります。
  1. Web サーバがバイトサービングに対応している事。
    基本的には現行のすべてのWeb サーバに実装されていますが、Apache 1.3.14 にはバグがありバイトサービングができません。(他のバージョンは可)
  2. ユーザーは Acrobat をブラウザのプラグインとして使用する事。
  3. Acrobatでページごとのダウンロードが有効になっている事。(デフォルトは有効になっています。)

Q. Microsoft社のOffice文書を変換するのにPDFlibを利用できますか?

A. PDFlibは、PDF文書の生成と出力の効率化に特化したソフトウェアですので、Office文書を直接読み込みPDF文書に変換する機能はありません。Word等で作成した文書をAcrobatなどでPDFに変換し、PDIにより、動的な出力と重ね合わせて出力するといった形での利用を想定しています。

Q. PDFlibは一般ユーザが対話型PDF作成ツールとして利用することができますか?

A. いいえ、できません。PDFlibiは、ウェブサイトなどのサーバ上で、効率的かつダイナミックにPDF文書を生成するためのプログラムライブラリーで、Acrobatなどの対話型ツールとは利用方法が異なります。PDFlibは、アプリケーションプログラムを作成して利用する必要があります。

Q. PDFlibではどのような日本語フォントを利用できますか?

A. PDFlibはAcrobatがサポートしているCJK(Chinese,Japanese and Korean)フォントをサポートしています。

CJKフォントは、Acrobatが標準でサポートしており、PDF文書に埋め込む必要の無いスタンダードCJKフォント及びユーザが指定するTrueTypeやOpenTypeタイプ形式のカスタムCJKフォントの2種類があります。PDFlib6からはフォントに関する制限がかなり緩和されましたが、スタンダードCJKフォントを非ユニコード系のCMapで使用する場合には以下の機能を使用できません
  • PDF_stringwdith()関数での文字幅計算
  • PDF_show_Boxed()関数でのボックス整形(UCS2でも不可)
  • アンダーライン/オバーライン/ストライクアウトモードの指定
  • textx/textyの位置の取得
また、日本語フォントを利用する際は、PDFではCMapと呼ばれる文字マップを利用します。 CMapに登録されている日本語フォントは下記の通りです。

CMap名文字セットとテキスト形式
UniJIS-UCS2-H, -VAdobe-Japan1 文字コレクションのUnicode (UCS-2) エンコーディング
UniJIS-UCS2-HW-H
UniJIS-UCS2-HW-V
UniJIS-UCS2-H と同じ。ただし、プロポーショナル欧文文字が半角の形に置き換えられている
UniJIS-UTF16-H
UniJIS-UTF16-V
Adobe-Japan1 文字コレクションのUnicode (UTF-16BE) エンコーディング。JIS X 0213:1000 文字セットのすべての文字割り当てを含む。
83pv-RKSJ-HMac ・JIS X 0208 文字セット+漢字Talk6 拡張・Shift-JIS ・Script Managerコード1
90ms-RKSJ-H
90ms-RKSJ-V
Microsoft コードページ932 (charset 128)、JIS X 0208 文字セット+ NEC ・IBM 拡張
90msp-RKSJ-H
90msp-RKSJ-V
90ms-RKSJ-H と同じだが、半角英字をプロポーショナル形に替えたもの
90pv-RKSJ-HMac ・JIS X 0208 文字セット+漢字Talk7 拡張・Shift-JIS ・Script Managerコード1
Add-RKSJ-H, -VJIS X 0208 文字セット+富士通FMR 拡張・Shift-JIS エンコーディング
EUC-H, -VJIS X 0208 文字セット、EUC-JP エンコーディング
Ext-RKSJ-H, -VJIS C 6226 (JIS78) 文字セット+ NEC 拡張、Shift-JIS エンコーディング
H, VJIS X 0208 文字セット、ISO-2022-JP エンコーディング


カスタムフォントは、TrueType形式(TTC形式を含む)、OpenType形式のカスタムフォントに対応しています。
CJKフォントや日本語フォントの取扱いの詳細についてはリファレンスマニュアル「4.7 日本語・中国語・韓国語テキスト」に記述されています。 また当社ウェブ記事「PDFlib入門 4.テキストを出力する」でもご説明しています。


Q. フォントの埋め込み方法を教えてください。

A. フォントを埋め込むにはload_font() にてembeddingを指定する必要があります。下記の例ではサブセッティングと呼ばれるPDFファイル中に使用されているフォントのみを埋め込む処理を行っています。



  $p = new PDFlib();
  $p->begin_document("/sample/sample.pdf", "");
  $p->set_parameter("SearchPath", "/usr/local/fonts");
    ↑フォントファイルの場所を指定します。
  $p->set_parameter("FontOutLine", "ABCMincho=ABCMincho.TTF");
    ↑フォントアウトラインを指定します。
  $optlist = sprintf("embedding=true ");
    ↑フォント埋め込みを行うように指示します。
  $optlist .= sprintf("autosubsetting=true ");
    ↑サブセッティングを行うように指示します。
  $p->load_font("ABCMincho", "unicode", $optlist);
     .
     .
     .
  $p->end_document("");
  $p = 0;
PHP5.1.2/PDFlib 6.0.3 p1


サブセッティングを行うと、フォント全てを埋め込む場合と比較してファイルサイズを小さくする事が可能です。日本語フォント等のファイルサイズの大きいフォントを埋め込む場合に有効な方法です。
サブセッティング処理を行うには、フォントが下記の必要があります。
  1. TrueType フォント
  2. PostScript かTrueType のアウトラインを持つOpenType フォント

※フォントの埋め込みは、埋め込むフォントのライセンスをご確認下さい。フォントによっては埋め込んだ文書の配布等に制限があります。

Q.PDFlib7.0でCJKフォントの取り扱い方法を教えてください。

A. PDFlib7.0より、CJKフォントを使用する際にはCMapsファイルが必要になりました。 CMapsファイルは、当社ダウンロードページ よりダウンロードしてください。 展開して生成される各ファイルを任意のディレクトリに設置後、SearchPathにて指定してください。



  $p = new PDFlib();
  $p->begin_document("/sample/sample.pdf", "");
  $p->set_parameter("SearchPath", "../../../resource/cmap");
    ↑CMapsファイルの場所を指定します。
  $p->load_font("Arial Unicode MS", "cp932", "");
     .
     .
     .
  $p->end_document("");
  $p = 0;
PHP5.1.2/PDFlib 7.0.0



Q. PDFlibで作成するPDF文書にフォームやJavaScriptを埋め込んだり、操作することができますか?

A. はい、PDFlib6よりPDFの主要なハイパーテキストを作成するハイパーテキスト関数がサポートされました。これによりフォームフィールド、注釈、アクションといった要素が作成できるほか関連するJavaScriptも定義できるようになりました。 ハイパーテキスト関数の使い方については。「リファレンスマニュアル 8.9ハイパーテキスト関数」に記述されています。

なおPDFlib Personalization Server(PPS)では、フォームと類似した機能として、テキスト、イメージ及びPDFページを動的に挿入できるブロックという領域を利用できます。ブロックは、名前と属性を持つ領域で、PDFlib ブロックプラグインをインストールしたAcrobatによりPDF文書上に簡単に定義することができます。

Q.現在PDFlib6.0+PPSで開発を行っています。PDFlib7.0に移行する際に気をつける点を教えてください。

A. PDFlib7.0からは、pCOS インターフェースが PDFlib+PDI (PPS を含む) に加えらました。 その為、PDI 関数が、下記の様に変更になりました。
PDFlib 6.0PDFlib 7.0
open_pdi 関数open_pdi_document 関数
close_pdi 関数close_pdi_document 関数
get_pdi_value 関数pcos_get_number 関数
get_pdi_parameter 関数pcos_get_string 関数


また、PDI用によく使用される下記の関数が変更になりました。
PDFlib 6.0PDFlib 7.0
begin_template 関数begin_template_ext 関数


上記を参考に、コードを書き換えてください。



[パッケージ、ライセンス他]

Q. 日本語のマニュアルはありますか?価格はいくらでしょうか?

A. はい、現在バージョン6.0.3の日本語リファレンスマニュアルがあります。弊社ダウンロードページで無償で入手、ご利用いただけます。(April 26, 2006リリース)

Q. Windows版で購入したライセンスをLinux版に変更することは可能ですか?

A. 異なるプラットフォーム(OS)間でのライセンスの移行はできません。新規にLinux版を購入していただくことになります。同一プラットフォームであれば、ライセンスの移行は可能です。

Q. 受託開発でPDFlibの利用を考えています。当社でPDFlibを貴社より購入して、開発したアプリケーションと一緒にお客様に納入することは可能ですか?

A. 可能です。「購入申し込み」のページで、「(B)他社納入(他社へPDFlibを納入)」をクリックしてください。次に「ご納入先(エンドユーザ)情報」及び「ご購入者(貴社)情報」を入力するページが表示されますので、正しい情報を入力して、購入手続きを進めてください。納入先であるエンドユーザ様が正式のライセンス利用者として登録され、サポートもエンドユーザ様に提供されることになりますので、この点をあらかじめご了承ください。

デベロッパー様が開発に利用するライセンスについてもあわせてご購入をご検討いただくようお願いいたします。

Q. PDFlibには開発者用ライセンスはありますか?

A. 弊社ダウンロードページから入手できる評価用パッケージでPDFlibの全ての機能を使用した開発が可能です。気になる機能などの検証も含め、ご活用ください。ただし、全ての出力にデモスタンプが表示されます。継続的に開発を行う場合には正規のライセンスのご購入をご検討ください。ライセンスをご購入いただきますと開発目的の利用についてはサーバ数の制限はありません(注)ので、追加費用を気にせず開発環境を利用することができます。

(注)購入いただいたパッケージの種類に応じた利用機能の制限を受けます。

Q. 当社のソフトウェア製品にPDFlibを組み込んで販売したいのですが、その場合に購入できるライセンスはありますか?

A. はい、自社のソフトウェア製品にPDFlibを組み込んで販売したいお客様にはプレミアムライセンスというライセンス方式が用意されています。プレミアムライセンスはドイツPDFlib社とお客様の直接契約となりますが、弊社ではその仲介をさせていただいております。一定量の販売本数が見込まれる場合にはたいへんお得になるライセンス体系となっておりますので、是非ご検討ください。プレミアムライセンスの詳細についてはこちらまでお問合せください。

Q. 購入を検討していますが、見積書は発行してもらえますか? また請求書は?

A. はい、弊社所定の書式のものを発行します。見積書については、購入製品名、プラットフォーム(OS)、CPU数、正式企業名、郵便番号、住所、電話番号、FAX番号、ご所属部署、ご氏名の各項目およびFAX、郵送の別を明記の上、Eメールにて、pdflib_sales@infotek.co.jpまで送付ください。

請求書、領収証については、ご購入時に購入フォームに選択欄がありますので、「郵送、FAXの別(両方でも可)」も合わせてご指定ください。

Q. 貴社とドイツPDFlib社の取引関係は?

A. インフォテックは、2003年7月よりPDFlib社の正規リセラーとして、直接PDFlib社と取引しています。弊社からご購入いただいたお客様には、PDFlib社発行のライセンスキー及びライセンス証書を弊社から直接、お届けします。また技術的な問題についても必要に応じPDFlib社と連絡をとりながら、日本のお客様をサポートしています。


(Aug 14,2003 - Oct 24, 2006)