この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.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」-「フロー定義一覧」をクリックします。
・「デバッグ」ボタンをクリックします。
2.入力値を設定し、デバッグを実行する
・「実行」ボタンをクリックします。
・「inputFilePath」に変換対象ファイル、「outputFilePath」に出力ファイルのパブリックストレージパスを設定し、「実行」ボタンをクリックします。
設定例は以下の通りです。
変数 | 値 |
inputFilePath | im_cookbook_8004/pdfa_logic/data/sample.docx |
outputFilePath | im_cookbook_8004/pdfa_logic/data/out.pdf |
1 2 3 4 5 6 7 8 9 10 11 |
<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ファイルが出力されていることを確認します。
以上で、全ての手順は終了です。
ユーザ定義タスク
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」を参照してください。
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
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()
一時ファイルを削除し、一時ファイルに関する操作を終了します。