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.zipPDF変換用ユーザ定義、フロー定義をまとめたzipファイル
    data / sample.docxPDF変換サンプル用のdocxファイル

zipファイル< im_cookbook_8004.zip >を、IM-LogicDesignerのインポート画面からインポートしてください。
本サンプルのユーザ定義(JavaScript定義)では、IM-PDFAutoConverter for Accel Platformのスクリプト開発モデル用APIを使用しています。
ユーザ定義の詳細については「ユーザ定義タスク」、サンプル内で使用しているAPIについては「API」を参照してください。

レシピ

  1. サンプルのフロー定義のデバッグ画面を開く
  2. 入力値を設定し、デバッグを実行する
  3. 実行結果を確認する

1. サンプルのフロー定義のデバッグ画面を開く

・「サイトマップ」-「LogicDesigner」-「フロー定義一覧」をクリックします。

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

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


2.入力値を設定し、デバッグを実行する

・「実行」ボタンをクリックします。

・「inputFilePath」に変換対象ファイル、「outputFilePath」に出力ファイルのパブリックストレージパスを設定し、「実行」ボタンをクリックします。
設定例は以下の通りです。

変数
inputFilePathim_cookbook_8004/pdfa_logic/data/sample.docx
outputFilePathim_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"

   }
 

#note { padding: 20px; background-color: #dbf1f8; margin-bottom: 20px; } #warning { padding: 20px; background-color: #fcefdc; margin-bottom: 20px; }
コラム
ユーザ定義の入出力値については「ユーザ定義タスク」を参照してください。
#note { padding: 20px; background-color: #dbf1f8; margin-bottom: 20px; } #warning { padding: 20px; background-color: #fcefdc; margin-bottom: 20px; }
コラム
設定例の「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>

項目名配列/リスト説明
statusbooleanなしtrue:PDF変換成功時
false:PDF変換失敗時
messagestringなし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行目のコメントを外してください。
#note { padding: 20px; background-color: #dbf1f8; margin-bottom: 20px; } #warning { padding: 20px; background-color: #fcefdc; margin-bottom: 20px; }
コラム
セキュリティ情報を設定する場合は、スクリプトの35、41行目のコメントを外してください。
#note { padding: 20px; background-color: #dbf1f8; margin-bottom: 20px; } #warning { padding: 20px; background-color: #fcefdc; margin-bottom: 20px; }
注意
IMPDFAutoConverter.setPrinter(name)の引数の値は、PDFコンバータのプリンタ名に合わせて変更してください。デフォルトのプリンタ名は「YSS PDF Converter XP」です。

2. PdfaTempFiles

サンプル用の一時ファイルを操作するクラスです。

注意

本クラスは公開されているAPIではなく、サンプル用に用意したロジックになります。
そのため、サンプル用のimmファイルを適用していない場合、本クラスは使用できません。

Constructor

new PdfaTempFiles()

インスタンスオブジェクトを作成します。

Returns

生成されたインスタンスオブジェクト

Methods

・create(ext)

空のファイルを作成します。

NameTypeDescription
extStringファイル名を生成するために使用される接尾辞文字列(※1

※1:null、または、未指定時は、".tmp" が使用されます。

Returns

新規作成された空のファイルを示すFileオブジェクト

・copyFrom(srcFilePath, ext)

指定したファイルをコピーし、コピー先のファイルを返します。

Parameters

NameTypeDescription
srcFilePathStringコピー元の対象ファイルのパブリックストレージパス
extStringコピー先のファイル名を生成するために使用される接尾辞文字列(※1

※1:null、または、未指定時は、".tmp" が使用されます。

Returns

コピー先ファイルを示すFileオブジェクト

copyTo(tempFile, destFilePath)

指定したファイルを、指定先へコピーします。

Parameters

NameTypeDescription
tempFileFileコピー元の対象ファイル
destFilePathStringコピー先の対象ファイルのパブリックストレージパス

close()

一時ファイルを削除し、一時ファイルに関する操作を終了します。