掲載日 2009年1月
はじめに : 「V6R1ちょっと、イイ話」における表記について
i5/OS® はV6R1から名称をIBM iに変更しました。バージョンを含めた正しい表記はIBM i 6.1です。ただ現行の検索エンジンの多くは「IBM i」という表記ですと他の無関係のページも多く検索されてしまいます。そこで「ちょっと、イイ話」ではIBM iに関連する用語について便宜的に旧名称もあわせて使用いたします。
- IBM i = i5/OS, OS/400®
- DB2® for i = DB2/400など
特に断りのない場合は、旧名称であっても最新OSバージョン(2009年1月時点ではIBM i 6.1)も包含するものとします。
またサーバーのブランド名称も2008年2月にSystem i® + System p® = Power Systems™ に統合されています。このため従来のSystem i, AS/400® に相当する表現は「IBM iを搭載したPower Systems」となってしまい不便です。このため「IBM iを搭載したPower Systems」の意味でSystem i, AS/400という用語も使用いたします。
※ 以上は IBMが使用している正式な表記法とは異なりますのでご注意ください。
IBM i 6.1(i5/OS V6R1)のPDF生成機能
OS/400は従来のバージョンでもライセンスプログラム 5722-IP1 Infoprint Serverを使用してプログラムが生成する印刷データのPDF化が出来ました。今回ご紹介するV6R1の新機能は従来のInfoprint Serverとは別な機能です。

【特徴】
- PDF化機能そのものはOS標準機能に含まれるため無償。
- PDF出力の指定はプリンターファイル(*PRTF)で行う。WSCSTオブジェクトも使用します。
- 生成されたPDFファイル内のテキストは文字として埋め込み。文字列検索なども可能。
- PDF生成する際、中間にスプールファイルは生成されません。
- 生成するPDFについて出力先IFSパス名だけを指定した場合はシステムがPDFファイル名を自動生成。PDFファイル名をユーザーが指定することも可能。
- フォーム(罫線など)やイメージ、バーコードなどのオーバーレイをサポート。
【前提】
IBM i 6.1無償ライセンス
- 5761-SS1 OPT.3 拡張ベースディレクトリーサポート
- 5761-SS1 OPT.33 PASE
- 5761-TS1 *BASE IBM Transform services for i5/OS
- 5761-TS1 OPT1 Transforms - AFP to PDF Transform
参考
今回のシステムには以下のAFP用フォントが導入されています。このため手順 1でQFNT61以下のフォント資源名をWRKFNTRSCコマンドで検索できるようになります。AFP用フォント 5769FN1はPDF出力用に必須ではありませんのでシステムに導入されていなくてもPDF出力は可能です。ただしWRKFNTRSCコマンドでフォント資源名の検索ができませんので、システム値 QIGCCDEFNTに指定するフォント資源名をマニュアル等で調べる必要があります。
AFP用フォント(有償)
- 5769FN1 *BASE ADVANCED FUNCTION PRINTING DBCS FONTS/400
- 5769FN1 OPT.1 AFP DBCS FONTS - JAPANESE
【PDF用プリンターファイルの使用例】

PDF出力はプリンターファイルのパラメーターで指定します。RPGの場合はRPGプログラムで使用するプリンターファイル(*PRTF)に対して以下のパラメーターを指定します。
- DEVTYPE : *AFPDS
- IGCDTA : *YES 日本語環境の場合
- TOSTMF パラメーター : PDF生成先となるIFSのディレクトリ名またはIFSディレクトリ名+PDFファイル名を指定
- WSCST : *WSCSTの名前。属性がCTXFORMのWSCSTオブジェクト名を指定
上記の例ではRPGから参照されたプリンターファイル PDFTEST/PDFPRTF01の指定に従ってPDFが生成されます。例ではTOSTMFパラメーターにPDFファイル名を明示指定しないのでシステム命名のPDFファイル名で作成されます。またPDF変換される際にはWSCSTオブジェクト PDFTEST/PDFWSCSTが参照されます。
【設定手順】
手順 1
システム値 QIGCCDEFNTにDBCSフォントを指定しておきます。
WRKSYSVALコマンド、CHGSYSVALコマンドでQIGCCDEFNTを変更します。
QFNT61ライブラリー中のDBCSフォントを指定します。
WRKFNTRSCコマンドなどで使用可能なフォント名を検索できます。

以下の例ではQIGCCDEFNTにQFNT61/X0M32Fを指定しています。
手順 2
PDF出力用のプリンターファイルを作成します。
QPRINTなどシステム提供のプリンターファイルを使用したい場合はCRTDUPOBJコマンドで複製して利用します。例ではQPRINTを複製してPDFTEST/PDFPRTF01を作成しています。
手順 3
CHGPRTFコマンドで手順 2のプリンターファイル PDFPRTF01の属性を変更します。
CHGPRTF FILE(PDFTEST/PDFPRTF01) DEVTYPE(*AFPDS) TEXT('PDF TEST PRTF') IGCDTA(*YES) TOSTMF('/home/PDFTEST') WSCST(PDFTEST/PDFWSCST)

ユーザー指定のDBCSデータ IGCDTA *YES
印刷装置タイプ DEVTYPE AFPDS

TOストリームファイル TOSTMF PDF出力先IFSパスまたはIFSパス+PDFファイル名
ワークステーション・カスタマイズOBJ WSCST WSCSTのオブジェクト名または*PDFを指定
必要な場合、WSCSTファイル PDFTEST/PDFWSCSTはこの後作成します。
手順 4(オプション)
通常はWSCSTパラメーターに*PDFを指定するだけでOKですが、必要な場合にはWSCSTファイルを作成する事も可能です。
PDF用WSCSTファイルはシステム提供で3種類提供されており、それをそのまま使用可能です。例ではシステム提供のWSCSTファイルのソースを取得してWSCSTファイルを作成しています。またWSCSTソースファイルを目的に応じてカスタマイズもできます。WSCST用ファイルのソースファイルはCCSID 1208で作成します。
CRTSRCPF FILE(PDFTEST/QTXTSRC) CCSID(1208)
システム提供のPDF用WSCSTファイルからWSCSTソースを取得します。
システム提供のWSCSTは3種類あり、RTVWSCSTコマンドのMFRTYPMDLパラメーターには以下のいずれかを指定します。
- *PDFEMBEDTT
- *PDFIBMWT
それぞれのファイルは指定するフォント等が異なります。今回の例では上記のいずれを使用しても同じ結果が得られます。
RTVWSCST DEVTYPE(*CTXFORM) MFRTYPMDL(*PDF) SRCMBR(PDFWSCST) SRCFILE(PDFTEST/QTXTSRC) TEXT('PDF CUSTMOIZE WSCST')
WSCSTファイルを作成します。
CRTWSCST WSCST(PDFTEST/PDFWSCST) SRCMBR(PDFWSCST) SRCFILE(PDFTEST/QTXTSRC)
手順 5
実行時は、RPGなどプログラムで使用するプリンターファイルにPDFTEST/PDFPRTF01を指定する以外にも、OVRPRTFコマンドを使用することも可能です。
出力したPDFファイルの例
PDFファイル名を明示指定しない場合、下記のようにプリンターファイル名+システム命名.pdfというファイル名になります。システム命名は特に見てわかりやすい命名規則がないため注意が必要です。

出力したPDFは文字列の検索なども可能です。

TOSTMFパラメーターにファイル名を指定した場合には下記のように指定したファイル名でPDFファイルが生成されます。例ではTOSTMFパラメーターに/home/PDFTEST/RPG_to_PDF.pdfと指定しています。

現行バージョンにおける制限事項
IBM i 6.1の現行バージョンでは半角カタカナをPDF出力した際に半角カタカナの印刷位置がずれるなどの現象が発生します。この現象は現時点でIBM i 6.1の仕様となっています。
上記の例では半角カタカナをPDF上で使用しない条件を想定しています。
