8.1. 後処理プログラムでの実装手順¶
コラム
当ページでは「wkhtmltopdf を利用したPDF出力機能」について説明します。注意
wkhtmltopdf は2023年1月にアーカイブされました。そのため、wkhtmltopdf のセットアップと運用は非推奨となりました。wkhtmltopdf のインストーラが提供されている環境では、現行どおり wkhtmltopdf を利用する事は可能です。弊社テクニカルサポートセンターでの問合せ対応も引き続き可能です。クライアントサイドのPDF出力は、2023 Autumn(Hollyhock) からはブラウザ印刷を利用した機能を提供します。wkhtmltopdf のPDF出力に代わり利用を検討ください。次の手段でサーバサイドでPDFを出力している、または出力しようとしている場合は IM-PDFDesigner for Accel Platform の利用を検討ください。
- JavaEE開発モデル PDF出力API
- スクリプト開発モデル PDF出力API
- Office 365 for IM-BIS ファイルアップロードジョブ
参照画面をPDF出力する API では、以下のパラメータが必要です。
- アプリケーションID
- ユーザデータID
PDF出力するAPIは、以下の箇所で利用できます。
- 後処理プログラムデータの更新時、データの削除時
コラム
PDF出力処理は、API を実行するログインユーザのセッションを利用して行われます。
そのため、参照画面にログインユーザのセッション情報(ユーザ名等)を表示する画面アイテムが配置されている場合、実行したユーザのセッション情報が出力されます。
8.1.1. JavaEE開発モデル¶
JavaEE開発モデルにおいて、PDF出力処理を実装する手順を示します。
8.1.1.1. 実装規約¶
JavaEE開発モデルにおいて、PDF出力処理を実装する場合、下記の制約に従って実装する必要があります。
- jp.co.intra_mart.foundation.forma.ApplicationPDFConverter (以下 ApplicationPDFConverter と略す)を利用します。
- 出力されたPDFファイルはできる限り出力処理後に削除することを推奨します。
8.1.1.2. 実装例1:オプション指定なし¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import java.io.File; import jp.co.intra_mart.foundation.forma.ApplicationPDFConverter; import jp.co.intra_mart.foundation.forma.exception.FormaSystemException; // パラメータ final String applicationId = "XX"; // アプリケーションID final String insertId = "XX"; // ユーザデータID // PDF出力処理 final ApplicationPDFConverter pdfConverter = new ApplicationPDFConverter(); File pdfFile = null; try { pdfFile = pdfConverter.createPDF(applicationId, insertId); : (ファイル操作処理) } catch(final FormaSystemException e) { // TODO エラー処理 e.printStacktrace(); } finally { // 出力されたPDFファイルを削除 if (pdfFile != null && pdfFile.exists()) { pdfFile.delete(); } }
8.1.1.3. 実装例2:オプション指定あり¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 import java.io.File; import java.util.ArrayList; import java.util.List; import jp.co.intra_mart.foundation.forma.ApplicationPDFConverter; import jp.co.intra_mart.foundation.forma.exception.FormaSystemException; // パラメータ final String applicationId = "XX"; // アプリケーションID final String insertId = "XX"; // ユーザデータID // wkhtmltopdfオプション final List<String> options = new ArrayList<String>(); // リンク無効 options.add("--disable-external-links"); // 印刷モード options.add("--print-media-type"); // PDF出力処理 final ApplicationPDFConverter pdfConverter = new ApplicationPDFConverter(); File pdfFile = null; try { pdfFile = pdfConverter.createPDF(applicationId, insertId, options); : (ファイル操作処理) } catch(final FormaSystemException e) { // TODO エラー処理 e.printStacktrace(); } finally { // 出力されたPDFファイルを削除 if (pdfFile != null && pdfFile.exists()) { pdfFile.delete(); } }
PDFファイルの出力方向を標準の縦方向から横方向に変更する場合、オプション指定で以下の内容を記述してください。
options.add("--orientation"); options.add("Landscape");
コラム
オプションに設定値がある場合は、上記のようにoptionsに分けて設定してください。
8.1.2. スクリプト開発モデル¶
スクリプト開発モデルにおいて、PDF出力処理を実装する手順を示します。
- FRApplicationPDFConverter を利用します。
- 出力されたPDFファイルはできる限り出力処理後に削除することを推奨します。
8.1.2.1. 実装例1:オプション指定なし¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // パラメータ var applicationId = "XX"; // アプリケーションID var insertId = "XX"; // ユーザデータID // PDF出力処理 var pdfConverter = new FRApplicationPDFConverter(); var result = pdfConverter.createPDF(applicationId, insertId); if (result.error) { // TODO エラー処理 Debug.console(result); } else { // PDFファイル var pdfFile = result.data; : (ファイル操作処理) // 出力されたPDFファイルを削除 pdfFile.remove(); }
8.1.2.2. 実装例2:オプション指定あり¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 // パラメータ var applicationId = "XX"; // アプリケーションID var insertId = "XX"; // ユーザデータID // wkhtmltopdfオプション var options = []; // リンク無効 options.push("--disable-external-links"); // 印刷モード options.push("--print-media-type"); // PDF出力処理 var pdfConverter = new FRApplicationPDFConverter(); var result = pdfConverter.createPDF(applicationId, insertId, options); if (result.error) { // TODO エラー処理 Debug.console(result); } else { // PDFファイル var pdfFile = result.data; : (ファイル操作処理) // 出力されたPDFファイルを削除 pdfFile.remove(); }
PDFファイルの出力方向を標準の縦方向から横方向に変更する場合、オプション指定で以下の内容を記述してください。
options.push("--orientation"); options.push("Landscape");
コラム
オプションに設定値がある場合は、上記のように分けてoptionsに分けて設定してください。