PDFlib

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

PDFGen ― 設定ファイルから PDF を生成

テキスト形式の設定ファイルから PDF を作成する PDFGen をご紹介します。

PDFGen とは

PDFGen は PDFlib 9 を使用したコマンドラインプログラムで、引数で受け取った設定ファイル (所定の書式でパラメータを設定したテキストファイル) の内容に従って PDF を作成します。PDFGen を使うことで、出力用のデータを作成する部分と PDF の作成部分を完全に分離することができます。

設定ファイルの記述方法

PDFGen に渡す設定ファイルはいくつかのセクションにわかれています。

  • PDF セクション
  • PAGE_X セクション (X はページ番号)
  • PUT_X_Y セクション (X はページ番号、Y 配置番号)

設定ファイルには、1つの PDF セクション、ページ数分の PAGE_X セクション、各ページに配置する要素分の PUT_X_Y セクションが含まれます。また、各セクションにはいつくかのパラメータが含まれます。

PDF セクションのパラメータ

PDF セクション で使用できるパラメータは以下の通りです。また、いくつかのパラメータは必ず設定する必要があります。

log_file
PDFGen のログファイル名を設定します。log_file を設定しないとログファイルは出力されません。
log_type
ログファイルを入れ替えるまでの間隔とその際の動作を設定します。デフォルトでは週毎に入れ替えを行い、古いログファイルは削除します。
log_size
ログファイルの最大サイズを設定します。log_size を超えた場合、ログファイルを入れ換えます。デフォルトでは 100 MB で入れ替えます。log_size は log_type が size の場合のみ有効です。
pdfName (必須)
出力する PDF のファイル名を設定します。設定されていない場合はエラーになります。
pdiName
インポートする PDF のファイル名を設定します。pdiName は PDFlib のライセンスでは使用できません。PDFlib+PDI か PPS のライセンスが必要です。
author
文書のプロパティ に記載される作成者を設定します。
title
文書のプロパティ に記載されるタイトルを設定します。
license
PDFlib のライセンスキーを設定します。license と後述の licensefile の両方が設定されていない場合、PDFGen は評価版として動作します。
licensefile
PDFlib のライセンスキーを記載したライセンスファイルを設定します。ライセンスファイルのテンプレート (licensekeys.txt) が PDFlib のインストールディレクトリに用意されています。licensefile と前述の license の両方が設定されていない場合、PDFGen は評価版として動作します。
masterPwd
表示用パスワードの設定や、印刷禁止等の権限を設定するためのマスターパスワードを設定します。
userPwd
PDF を開く際に必要になるパスワードを設定します。userPwd を設定する場合、masterPwd が必要です。また、userPwd と masterPwd を同じにすることはできません。
permissions
高画質印刷の許可等の権限を設定します。permissions を設定する場合、masterPwd が必要です。使用できるキーワードは以下の通りです。
noprint
Acrobat でファイルを印刷できないようにします
nohiresprint
Acrobat でファイルを高解像度印刷できないようにします (PDF 1.4 以上)
nomodify
Acrobat でページの編集やコピー、フォームフィールドの追加・変更を行えないようにします
noassemble
nomodify に加えて、ページの追加、削除、回転やしおりの作成、サムネイルの作成を行えないようにします
noannots
Acrobat でしおりとフォームフィールドの追加、変更を行えないようにします
noforms
nomodify、noannots に加え、Acrobat でフォームフィールドに記入できないようにします (PDF 1.4 以上)
nocopy
Acrobat でアクセシビリティ目的での抽出を除くテキストやグラフィックのコピー、抽出を行えないようにします
noaccessible
Acrobat でアクセシビリティ目的でのテキストやグラフィックの抽出を行えないようにします (PDF 1.4 以上)
plainmetadata
文書が暗号化する場合でも、XMP 文書メタデータは暗号化しないようにします (PDF 1.5 以上)
上記に一致しないキーワードを設定した場合はエラーになります。
compatibility
出力する PDF の PDF バージョンを設定します。PDFlib 9 を使用した場合に設定できる PDF バージョンは以下の通りです。
  • 1.4
  • 1.5
  • 1.6
  • 1.7
  • 1.7ext3
  • 1.7ext8
デフォルト値は利用する PDFlib により異なりますが、PDFlib 9 を使用した場合は 1.7 になります。
trace
PDFlib API の呼び出しログのトレースを設定したファイル名に出力します。trace が設定されていない場合、トレースを出力しません。
path
CMap ファイルが格納されているフォルダの絶対パスを設定します。
pages (必須)
ページ数を設定します。

PAGE_X セクションのパラメータ

出力文書の X ページ目の内容を設定します。X は 1 から数えます。PDF セクションの pages を超えた場合、pages 分まで作成されます。

PDF セクション で使用できるパラメータは以下の通りです。下記以外のパラメータは反映されません。

width
ページ X の幅を設定します。設定しない場合は 210.2mm (A4 サイズ) が設定されます。
height
ページ X の高さを設定します。設定しない場合は 297.5mm (A4 サイズ) が設定されます。
pdiPage
pdiName で設定した PDF からインポートするページを設定します。
pdiOption
インポートしたページを配置するためのオプションを設定します。
pdiProcess
PDI でインポートした PDF の PDF/A または PDF/X の出力インテント ICC プロファイルを出力文書に複製する場合、action=copyoutputintent を設定します。
objects
PAGE_X に適用するオブジェクト数 Y を設定します。

PUT_X_Y セクションのパラメータ

出力文書の X ページ目に配置するテキストや画像等を設定します。Y は 1 から数えます。PAGE_X セクションの objects を超えた場合、objects分まで作成されます。

object_type
配置するオブジェクトの種類を設定します。設定可能なオブジェクトは以下の通りです。
text
ページ上にテキストを記載
block
PDFlib ブロックにテキスト・画像・PDF ページ等を配置
line
罫線を記載
rect
矩形領域を記載

object_type=text の場合、設定できるパラメータは以下の通りです。text パラメータを設定する場合、face、file、encoding は必ず必要です。

face (必須)
テキストの表示に使用するフォントのフォント名を設定します。
file (必須)
フォントファイルの絶対パスを設定します。
encoding (必須)
テキストのエンコーディングを設定します。
option
フォントのオプションを設定します。例えば太字にする場合、fontstyle=bold を設定します
size
フォントサイズを設定します。
text
記載するテキストを設定します。
x
矩形領域の左下の座標を左端からの距離 (mm) で設定します。設定しない場合は 0 (左端) が設定されます。
y
矩形領域の左下の座標を上端からの距離 (mm) で設定します。設定しない場合は 0 (上端) が設定されます。
align
矩形領域内のテキストの配置方法を設定します。使用できるキーワードは以下の通りです。
  • 横方向
    • left
    • right
    • center
  • 縦方向
    • top
    • middle
    • bottom
設定しない場合や、上記に該当しない場合は left top が設定されます。
charspacing
文字と文字の間隔を設定します。設定しない場合は 0 (間隔なし) が設定されます。
wordspacing
単語と単語の間隔を設定します。設定しない場合は 0 (つまり間隔)なしが設定されます。
color
テキストの色を設定します。

object_type=block の場合、設定できるパラメータは以下の通りです。

name
PDFlib ブロックのブロック名を指定します。
type
PDFlib ブロックのタイプを設定します。設定できる PDFlib ブロックのタイプは以下の通りです。
text
一行テキストおよび複数行テキスト
image
画像
pdf
PDF ページ
description
PDFlib ブロックの内容を設定します。
options
type に合わせて PDF_fill_**block() のオプションを設定します。
face
テキストの表示に使用するフォントのフォント名を設定します。
file
テキストの表示に使用するフォントファイルの絶対パスを設定します。

object_type=line および object_type=rect の場合、設定できるパラメータは以下の通りです。

left
左端の座標を設定します。
right
右端の座標を設定します。
top
上端の座標を設定します。
bottom
下端の座標を設定します。
bgcolor
背景色を RGB で設定します。

PDFlib ブロックとの連携

PDFGen のもうひとつの機能として、引数で渡した PDF 内に含まれる PDFlib ブロックの内容に沿って、設定ファイルの雛形を出力する機能があります。

PDFlib ブロックは Adobe Acrobat 用の無償プラグインである PDFlib ブロックプラグインで作成する矩形の領域で、Adobe Acrobat を使って自由に配置場所を決めることができます。

PDFGen の引数に PDF を渡すと、PDFlib ブロックの内容に沿って PUT_X_Y セクションを標準出力に出力します。この出力に PDF セクションと PAGE_X セクションを加えることで、PDFlib ブロックを使った PDF を簡単に作成することができます。

PDFGen の使用例

PDFGen に渡すコンフィグレーションファイルの例と、その出力結果をご紹介します。

Hello World

Hello World です。PUT_X_Y セクションで object_type=text にした場合、face、file、encoding は必須です。またテキストを見える位置に表示するため、x と y を設定する必要があります。


[PDF]
pdfName=hello_world.pdf
pages=1

[PAGE_1]
objects=1

[PUT_1_1]
object_type=text
face=MS-Gothic
file=/path/to/msgothic.ttc
encoding=unicode
x=150
y=150
size=20
text=Hello World!
Hello world! を表示する設定ファイル

入力ファイルおよび出力結果は以下の通りです。

PPS サンプル (請求書作成)

既存の PDF にテキストや画像を配置して PDF を作成する場合のサンプルです。

前述の通り、PDFGen には PDFlib ブロックを配置した PDF を読み込んで設定ファイルの雛形を作成する機能があります。この機能を使い、請求書の基になる PDF に商品名、価格等を配置して請求書を作成します。

下記の設定ファイルは PDFGen が出力する雛形と、これに PDF セクションと PAGE_X セクションを追加した設定ファイルです。


PDFGen v4.1.1 for PDFlib 9.1.1
 copyright (c) 2018 infoTek K.K. all rights reserved.
 DLL version 9.1.1
[PUT_1_1]
object_type=block
type=text
name=amount_1
description=
options=

[PUT_1_2]
object_type=block
type=text
name=amount_10
description=
options=

[PUT_1_3]
object_type=block
type=text
name=amount_2
description=
options=

...
PDFGen が標準出力に表示した雛形 (一部)

PDFGen v4.1.1 for PDFlib 9.1.1
 copyright (c) 1997-2013 infoTek K.K. all rights reserved.
 DLL version 9.0.0

[PDF]
pdfName=invoice.pdf
pdiName=pps_invoice.pdf
title=Invoice
author=infoTek K.K.
license=
pages=1

[PAGE_1]
pdiPage=1
pdiOption=adjustpage
objects=46

[PUT_1_1]
object_type=block
type=text
name=amount_1
description=\2,000,000.-
options=
file=/path/to/msgothic.ttc
face=MS-PGothic
encoding=unicode

[PUT_1_2]
object_type=block
type=text
name=amount_10
description=
options=

[PUT_1_3]
object_type=block
type=text
name=amount_2
description=\60,000.-
options=
file=/path/to/msgothic.ttc
face=MS-PGothic
encoding=unicode

...
雛形をベースに作成した設定ファイル (一部)

各入力ファイルおよび出力結果は以下の通りです。

PDFGen の動作環境

PDFGen は Windows 上で動作する 32bit アプリケーションです。

PDFGen の入手方法

PDFGen は こちらからダウンロードいただけます。(zip)

(Jan 30, 2018 - )