IM-PDFAutoConverterを使ってIM-LogicDesignerでファイルをPDFに変換する方法
このCookBookでは、IM-LogicDesignerのJavaScript定義で、IM-PDFAutoConverter for Accel PlatformのAPIを使用したPDF変換について紹介しています。
#note { padding: 20px; background-color: #dbf1f8; margin-bottom: 20px; } #warning { padding: 20px; background-color: #fcefdc; margin-bottom: 20px; }本サンプルは、IM-PDFAutoConverter for Accel Platform 2022Winter以降のバージョンが必要です。
完成イメージ
このCookBookのレシピ通りに実行し変換したPDFファイルの完成イメージは、以下の通りです。

以下の完成サンプルをダウンロードしてご活用ください。
https://dev-portal.intra-mart.jp/wp-content/uploads/2023/02/cookbook_im_cookbook_8004-1.0.0.zip
immファイルを適用すると、パブリックストレージ配下に、サンプル実行に必要な以下のファイルが設置されます。
フォルダ名/ファイル名 | 説明 |
%PUBLIC_STORAGE_PATH% | パブリックストレージパス |
im_cookbook_8004 / pdfa_logic / | IM-LogicDesigner PDF変換サンプル用フォルダ |
import / im_cookbook_8004.zip | PDF変換用ユーザ定義、フロー定義をまとめたzipファイル |
data / sample.docx | PDF変換サンプル用のdocxファイル |
zipファイル< im_cookbook_8004.zip >を、IM-LogicDesignerのインポート画面からインポートしてください。
本サンプルのユーザ定義(JavaScript定義)では、IM-PDFAutoConverter for Accel Platformのスクリプト開発モデル用APIを使用しています。
ユーザ定義の詳細については「ユーザ定義タスク」、サンプル内で使用しているAPIについては「API」を参照してください。
レシピ
- サンプルのフロー定義のデバッグ画面を開く
- 入力値を設定し、デバッグを実行する
- 実行結果を確認する
1. サンプルのフロー定義のデバッグ画面を開く
・「サイトマップ」-「LogicDesigner」-「フロー定義一覧」をクリックします。

・「フローカテゴリ CookBook」-「im_cookbook_8004_flow」を選択し、「編集」ボタンをクリックします。

・「デバッグ」ボタンをクリックします。

2.入力値を設定し、デバッグを実行する
・「実行」ボタンをクリックします。

・「inputFilePath」に変換対象ファイル、「outputFilePath」に出力ファイルのパブリックストレージパスを設定し、「実行」ボタンをクリックします。
設定例は以下の通りです。
変数 | 値 |
inputFilePath | im_cookbook_8004/pdfa_logic/data/sample.docx |
outputFilePath | im_cookbook_8004/pdfa_logic/data/out.pdf |
<JSON入力>
```json
{
"inputFilePath": "im_cookbook_8004/pdfa_logic/data/sample.docx",
"outputFilePath": "im_cookbook_8004/pdfa_logic/data/out.pdf"
}

ユーザ定義の入出力値については「ユーザ定義タスク」を参照してください。
設定例の「inputFilePath」には、パブリックストレージ配下に設置されたPDF変換サンプル用のdocxファイルを指定しています。
・「決定」ボタンをクリックします。

正常にデバッグが終了した場合、その旨のメッセージが表示され、変数情報ペイン、および、コンソールペインが更新されます。

3.実行結果を確認する
・「outputFilePath」に指定した出力先に、PDFファイルが出力されていることを確認します。

・
PDFの変換処理に失敗した場合は、デバッグ実行時のユーザ定義の返却値「status」、および、「message」を確認してください。

以上で、全ての手順は終了です。
ユーザ定義タスク
im_cookbook_8004_user

・入力値
im_cookbook_8004_user <object>
├─ inputFilePath <string>
└─ outputFilePath <string>
項目名 | 必須/任意 | 型 | 配列/リスト | 説明 |
inputFilePath | 必須 | string | なし | PDF変換対象ファイルのパブリックストレージパス |
outputFilePath | 必須 | string | なし | PDF変換出力ファイルのパブリックストレージパス |
・ 出力値
im_cookbook_8004_user <object>
├─ status <boolean>
└─ message <string>
項目名 | 型 | 配列/リスト | 説明 |
status | boolean | なし | true:PDF変換成功時 false:PDF変換失敗時 |
message | string | なし | PDF変換成功時:空文字 PDF変換失敗時:エラーメッセージ |
スクリプトサンプル内で使用しているAPIについては「API」を参照してください。
javascript
/**
* run.
*
* @param input {Object} - task input data.
* @return {Object} task result.
*/
function run(input) {
const tempFiles = new PdfaTempFiles();
try {
if (!input.inputFilePath) {
throw new Error("PDF変換対象ファイルパスにnull、または、空文字が指定されています。");
}
if (!input.outputFilePath) {
throw new Error("PDF変換出力ファイルパスにnull、または、空文字が指定されています。");
}
if (input.inputFilePath.indexOf('.') != -1) {
const ex = new IMPDFAutoConverter();
const srcFileExt = "." + input.inputFilePath.split('.').pop();
const tempSrcFile = tempFiles.copyFrom(input.inputFilePath, srcFileExt);
const tempOutFile = tempFiles.create();
/* 文書情報を設定 */
/* ex.setDocInf(
"タイトル",
"サブタイトル",
"作成者",
"アプリケーション",
"キーワード"); */
/* 128ビットセキュリティ情報を設定 */
/* ex.setSecurity128(
"open",
"sec",
"PRINT_DISABLE",
"ACC_DISABLE",
"COPY_DISABLE",
"DOCCHANGE_DISABLE"); */
/* Web用に最適化の有無を設定 */
ex.setFastWebView(true);
/* プリンタ名を設定 */
ex.setPrinter("YSS PDF Converter XP");
/* 変換前のタイムアウト秒数を設定 */
ex.setBeforeTimeoutSec(0);
/* 変換後のタイムアウト秒数を設定 */
ex.setTimeoutSec(1500);
/* PDF変換サーバへのファイル転送のタイムアウトミリ秒を設定 */
ex.setTransTimeoutMilliSec(1560000);
/* PDF変換 */
ex.convert(tempSrcFile.path(), tempOutFile.path());
tempFiles.copyTo(tempOutFile, input.outputFilePath);
} else {
throw new Error("PDF変換対象ファイルの拡張子がありません。");
}
} catch (error) {
return {
status: false,
message: error.message
};
} finally {
tempFiles.close();
}
return {
status: true,
message: ""
};
}
API
サンプル内で使用しているAPIについて示します。
1. IMPDFAutoConverter
IMPDFAutoConverterクラスの詳細については、「PDFAutoConverter APIドキュメント スクリプト開発モデル」を参照してください。
#note { padding: 20px; background-color: #dbf1f8; margin-bottom: 20px; } #warning { padding: 20px; background-color: #fcefdc; margin-bottom: 20px; }文書情報を設定する場合は、スクリプトの27、32行目のコメントを外してください。
セキュリティ情報を設定する場合は、スクリプトの35、41行目のコメントを外してください。
IMPDFAutoConverter.setPrinter(name)の引数の値は、PDFコンバータのプリンタ名に合わせて変更してください。デフォルトのプリンタ名は「YSS PDF Converter XP」です。
2. PdfaTempFiles
サンプル用の一時ファイルを操作するクラスです。
注意
本クラスは公開されているAPIではなく、サンプル用に用意したロジックになります。
そのため、サンプル用のimmファイルを適用していない場合、本クラスは使用できません。
Constructor
new PdfaTempFiles()
インスタンスオブジェクトを作成します。
Returns
生成されたインスタンスオブジェクト
Methods
・create(ext)
空のファイルを作成します。
Name | Type | Description |
ext | String | ファイル名を生成するために使用される接尾辞文字列(※1) |
※1:null、または、未指定時は、".tmp" が使用されます。
Returns
新規作成された空のファイルを示すFileオブジェクト
・copyFrom(srcFilePath, ext)
指定したファイルをコピーし、コピー先のファイルを返します。
Parameters
Name | Type | Description |
srcFilePath | String | コピー元の対象ファイルのパブリックストレージパス |
ext | String | コピー先のファイル名を生成するために使用される接尾辞文字列(※1) |
※1:null、または、未指定時は、".tmp" が使用されます。
Returns
コピー先ファイルを示すFileオブジェクト
・copyTo(tempFile, destFilePath)
指定したファイルを、指定先へコピーします。
Parameters
Name | Type | Description |
tempFile | File | コピー元の対象ファイル |
destFilePath | String | コピー先の対象ファイルのパブリックストレージパス |
・close()
一時ファイルを削除し、一時ファイルに関する操作を終了します。