→第一回「概要」(最終的にどのようなPDFが作成できるのか?)はこちら
1. PASE環境へのApache-FOP導入
PASE環境へのApache-FOP導入は「/opt/fop」に行います。必要な環境は下記のとおりです。
※この資料ではPythonがインストールされている前提です。
| No. | 項目 | 内容 | 備考 |
|---|---|---|---|
| 1 | 5250エミュレータ | IBM i Client Access Solutions 1.1.9.6 | エミュレータのコードページ 1399のセッションが必須 ※Apache-FOPのインストールと設定時のみ |
| 2 | OS | IBMi V7.5 TR 3 CCSID 5026 : 日本語カタカナ | |
| 3 | Java | JDK 8 | Apace-FOP2.11のREADMEに記載されています。 |
| 4 | Apache-FOP | 2.11 | Apacheのホームページからダウンロードする |
2. Apache-FOPのダウンロード
Apache-FOPのダウンロードURL( https://xmlgraphics.apache.org/fop/download.html )からFOP-2.11-bin.zipをダウンロードします。
クリックするとダウンロードが始まります。
ローカルPCの適切なフォルダーに保存して下さい。(約23Mbyteです。)
今回はC:\TEMPに保存する例で説明します。
3. 3 Apache-FOPのPASE環境への導入
(※本資料では/opt/fop配下にApache-FOPを導入する想定です。)
3.1 Apache-FOPをインストールするディレクトリーを作成
5250エミュレータ(コードページ=1399)の画面で実行します。 ※5035系の英小文字が必須。
ユーザークラス *QPGMR 以上の権限を持つユーザーでサインオンします。
サインオン後、現行ジョブのCCSIDを1399に変更します。(CHGJOB CCSID(1399))
PASE環境に入ります。(qp2termコマンドの実行)
/opt/fopディレクトリーを作成します。(mkdir -p /opt/fop) ※英小文字です。注意願います。
※umask値を変更されている方は、作成したディレクトリーが適切なパーミッションになっている事を確認して下さい。
※umask値を変更されてない方(デフォルトではumask は00)は、パーミッションが、777 (rwxrwxrwx )になります。
※必ずls -ld コマンドで /optと /opt/fopディレクトリーのパーミッションを確認して下さい。rwxr-xr-x以上になっている必要があります。
この画面は後に使用しますので、このままの状態にしておきます。
3.2 Apache-FOPのftp転送とzipファイルの解凍
3.2.1 Apache-FOPをPASE環境へ転送
エクスプローラでC:\TEMPを開きます。(下記画面になります。)
「cmd」を入力し「Enterキー」を押すとコマンド・プロンプトが表示されます。コマンド・プロンプト画面にて作業します。
dirコマンドでダウンロードしたFOP-2.11-bin.zipが存在する事を確認します。
ftpコマンドでIBMiに接続し、/optにFOP-2.11-bin.zipをバイナリーモードでputします。(※詳細は下図を参照して下さい。)
3.2.2 PASE環境にてFOP-2.11-bin.zipを解凍
5250エミュレータ(コードページ=1399)の画面で操作します。1399のコードページで英小文字を入力する必要があります。
ls -l コマンドで/optにftp転送したFOP-2.11-bin.zipが存在する事を確認します。確認後、下記の手順を実行します。
| 手順 | コマンド | 説明 |
|---|---|---|
| 1 | cd /opt | カレント・ディレクトリーを/optに変更します。 |
| 2 | jar-xvf fop-2.11-bin.zip | jarコマンドでfop-2.11-bin.zipを解凍します。(※unzipコマンドはデフォルトでは存在しません。) ※/opt/fop-2.11ディレクトリーに解凍されます。 |
| 3 | cd /opt/fop-2.11/fop | cd /opt/fop-2.11/fopにカレント・ディレクトリーを変更します。 |
| 4 | mv fop /opt/fop-2.11/fop.sh | FOPシェル・スクリプトを一時的に名前変更し、ファイルの場所を/opt/fop-2.11に変更します。 |
| 5 | mv * /opt/fop-2.11 | 残りの全てのファイルを/opt/fop-2.11に移動します。 |
| 6 | cd /opt/fop-2.11 | カレント・ディレクトリーをcd /opt/fop-2.11に変更します。 |
| 7 | rmdir /opt/fop-2.11/fop | 不要になった/opt/fop-2.11/fopディレクトリーを削除します。(中身は空のはず) |
| 8 | mv fop.sh fop | 一時的に名前変更したfop.shを元のファイル名fopに戻します。 |
| 9 |
cd /opt mv fop-2.11 fop |
ディレクトリー/opt/fop-2.11を/opt/fopに名前変更します。 |
| 10 | mkdir /opt/fop/font | フォント用ディレクトリー/opt/fop/fontを作成します。 |
上記作業により/opt/fopディレクトリーにApache-FOPのプログラムを導入した事になります。
3.2.3 Apache-FOPの日本語設定
/opt/fop/conf/fop.xconfを修正します。
3.2.4 Apache-FOPの日本語フォント・コピー
本資料ではIPAゴシック・フォント(等倍フォント※exフォントではない。IPAexゴシックでも問題はありません。)を使う前提で説明します。
他のフォントを使用する場合は、必ず著作権に違反しないよう注意して下さい。
https://moji.or.jp/ipafont/ipa00303/からダウンロードします。
※この例では.TTFで説明していますが、.TTCが使えるかどうかは検証していません。
下記の様にftpでIPAゴシックフォント・ファイルをPASE環境の/opt/fop/fontにバイナリーモードで転送します。
/opt/fop/fontは/opt/fop/conf/fop.xconfに設定しています。(前述)
他にも使用するフォントがある場合は、同様に/opt/fop/fontに転送して下さい。
3.2.5 Apache-FOPのXMLプロセッサー設定
※この設定はWindowsでも同じです。
Apache-FOPのXMLプロセッサーはデフォルトでxalan (※XSLT1.0相当)です。
今回は、XSLT2.0の組み込み関数が必要です。
https://www.saxonica.com/html/download/java.htmlからJava版をダウンロードします。
続いて、/opt/fop/fopシェル・スクリプトを修正し、Saxonを使用するように記述します。
5250エミュレータでホスト・コードページを1399にしたセッションで実行します。サインオンはQPMGR以上の権限があるユーザーで行って下さい。
chgjob ccsid(1399)コマンドを実行し、現行ジョブのccsidを1399に変更します。
※ホスト・コードページを1399にしていると英小文字でもコマンドを実行できます。
edtf stmf(‘/opt/fop/fop’)コマンドを実行し、FOPシェル・スクリプトを修正します。
※edtfは日本語が使用できませんので注意して下さい。(使い方はSEUとほぼ同じです。)
Saxonを宣言する文字列を一度変数にセットし、セットした変数をJavaコマンドのオプション-Dで宣言します。
この設定を行う事で、XMLプロセッサーはSaxonを使用するようになります。編集終了後、F3を押す事で変更した内容が保存されます。続いて、もう一度F3を押すとedtfが終了します。
3.2.6 サンプルのファイルを転送
a.下記のシェル・スクリプトやPyhtonスクリプト等を/opt/fopに転送します。
※ftpで転送する場合は必ずバイナリーモードで行って下さい。
| No. | ファイル名 | 内容 |
|---|---|---|
| 1 | Logo.svg | 電業のロゴファイル |
| 2 | quatationQr.py | QRコードをsvg形式で作成するpythonスクリプト |
| 3 | chk_home_dir.sh | /home下にユーザーのホーム・ディレクトリ・チェック |
| 4 | run_FOP.sh | Apache-FOPを実行する本体のシェル・スクリプト |
| 5 | run_FOP2.sh | run_FOP.shをフックするシェル・スクリプト ※DEBUGをし易くする為です。 |
| 6 | quotationForm.xsl | PDFを作成するFOPのスタイルシート(フォーム形式) |
| 7 | quotationList.xsl | PDFを作成するFOPのスタイルシート(一覧形式) |
| 8 | quotation.xml | テスト用サンプルXMLデータファイル(※フォント指定はIPAゴシック) |
b.下記のバッチ・ファイルをC:\TESTフォルダーにコピー。(※このバッチ・ファイルはPCでPDFファイルを表示させるためのものです。)
| No. | ファイル名 | 保存先 |
|---|---|---|
| 1 | FOPPDF.BAT | C:\TEST ※パラメータ・ファイル ID=PC_CONFIGのパラメータに設定したもの |
上記バッチ・ファイルはパラメータ・ファイルのID=PC_CONFIGの第一パラメータが*YESの時に実行します。
c.SAVFのリストア
| No. | 内容 | コマンド |
|---|---|---|
| 1 | ライブラリー・リストに存在しているライブラリーに SAVFを作成 |
CRTSAVF FILE(???LIB/SAVEXCEL) |
| 2 | PCからFTPでsavfを???LIB/SAVEXCELにバイナリー転送します。 | 転送元:IBM_I_EXCELLIB_V7R3M0_REL1.1.savf 転送先:???LIB/SAVEXCEL |
| 3 | 転送したSAVFからライブラリーをRESTOREします。 | RSTLIB LIB(EXCELLIB) DEV(*SAVF) SAVF(???LIB/SAVEXCEL) |
d.サンプルデータでのApache-FOPの実行
5250エミュレータでホスト・コードページを1399にしたセッションで実行します。サインオンはQPMGR以上の権限があるユーザーで行って下さい。※Pythonがインストールされている前提です。
| No | 実行するコマンド | 内容 |
|---|---|---|
| 1 | chgjob ccsid(1399) | 現行ジョブのccsidを1399に変更します。 |
| 2 | call qp2term | PASE環境のターミナルを開きます。 |
| 3 | cd /opt/fop | カレント・ディレクトリーを/opt/fopに変更。 |
| 4 | python quoatationQr.py quotation.xml | XmlデータからQRコードファイルを生成 |
| 5 | ./fop -xml quotation.xml -xsl quotationForm.xsl -pdf test.pdf -c conf/fop.xconf | FOPを実行。Test.pdfをカレント・ディレクトリーに生成。 |
生成されたPDFを確認したい場合は、ftpでPCにバイナリー転送しAdobe Reader等で確認して下さい。以下のようなPDFになります。
3.2.7 (補足)フォント名の見つけ方
Windowsで.ttfファイルのプロパティを表示し、「詳細」タブをクリックします。
タイトルに表示される文字列がフォント名です。
※フォント・ファイル名≠フォント名です。注意して下さい。











コラム:SVGファイルとは
(Adobeサイト https://www.adobe.com/jp/creativecloud/file-types/image/vector/svg-file.html の情報です。)
Scalable Vector Graphics(SVG)は、webに適したベクターファイル形式です。JPEGなどのピクセルベースのラスターファイルに対し、ベクターファイルは、グリッド上の点と線にもとづいて数式を使用して画像を保存します。つまり、SVGなどのベクターファイルは、品質を損なわずにサイズを大幅に変更できるため、ロゴや複雑なオンライングラフィックに最適です。
SVGがwebデザイナーに人気が高い理由は、そのサイズ変更機能だけではありません。SVGは、XMLコードで記述されています。つまり、あらゆるテキスト情報を、図形ではなく、そのままのテキストとして保存します。これにより、Googleなどの検索エンジンがSVGグラフィックのキーワードを読み取ることができるため、webサイトの検索ランキングを上げるために役立ちます。
SVGファイルは拡張子(.svg)で簡単に見分けることができます。