PDFからXDW変換

概要

監視フォルダに格納されたPDFファイルをXDW文書に変換して「20_変換済み」フォルダに出力します。

XDW文書への変換は、コンソールアプリ「 createDocumentFromAppFile.exe 」をコマンド実行で呼び出して行います。

実行すると以下の様に動作します。

10_XDW変換
図面サンプル.pdf
コマンド実行
変換
20_変換済み
図面サンプル.xdw
ファイル移動
30_処理済み
2021\07\21
図面サンプル.pdf

「createDocumentFromAppFile.exe」の詳細は、仕様書ご覧下さい。

createDocumentFromAppFileはプロセス単位で同時実行する個数を制限しています。最大個数(デフォルトは8)になると、プロセス数が上限に達しているというエラーになります。

この設定例ではプロセス数が上限に達しているというエラーになった場合は無視するようにしています。その場合は入力ファイルが移動しないので、次のフォルダ監視で再処理されます。

この変換はDocuWorksプリンターを使った変換を行っています。プリンターを使った変換は仕組みが複雑でPCの負荷率も高く、安定性が劣ります。

createDocumentFromAppFileがエラー時のリカバリ処理などを行っているので、ある程度、安定性を向上させますが、環境や処理内容によっては対処不可能な問題が発生する可能性もあります。

例えば、DocuWorks10の環境で1000ページのPDFファイルをXDW変換するとプリンターのステータスが完了となっているのにXDWファイルが生成されない場合がある不具合が確認されています。

設定の前準備

C:\Homeの下に、以下のような構成でフォルダを作り、準備します。

フォルダ構成のダウンロード

PDFからXDW変換_フォルダ構成.zip

Cドライブのルートに解凍してください。

フォルダ構成は以下の通りです。

  • C:\Home\eDocArrangement2\Demo\PDFからXDW変換
    • 10_XDW変換
      監視フォルダ。
      • _図面サンプル.zip
    • 15_エラー
      エラー時の移動先。
    • 20_変換済み
      変換先フォルダ。
    • 30_処理済み
      処理済みフォルダ。年、月、日のフォルダを自動作成する。
    • 90_System
      • 10_Tool
        • createDocumentFromAppFile
          createDocumentFromAppFileの配置フォルダ。最新版をダウンロードして配置してください。
          • createDocumentFromAppFile.exe
          • createDocumentFromAppFile.html
          • TechnoStyle.DocuWorks.dll
      • 20_Temp
        一時フォルダ。
      • 90_Log
        ログの出力先。
        • 10_CommandLog
          createDocumentFromAppFile.exeのログ出力フォルダ。

設定ファイル

以下のリンクから完成した設定をダウンロードしていただくことができます。

設定ファイルのダウンロード

PDFからXDW変換_設定.zip

以下のフォルダに解凍すると設定が適用されます。

C:\Users\ユーザー名\AppData\Roaming\TechnoStyle\eDocArrangement2

グローバルデータ

グローバルデータとログの設定(共通設定)

グローバルデータの内容は以下の通りです。トップフォルダを変更する場合は、以下の定義を変更してください。グローバルデータは、「共通設定」から変更できます。

名前

値

TopFolder

C:\Home\eDocArrangement2\Demo\PDFからXDW変換

詳しい設定方法は、設定例(共通)グローバルデータとログの設定を参照して下さい。

ログ設定

実行ログファイル名

{%GET_G(TopFolder)}\90_System\90_Log\Log.txt

エラーログファイル名

{%GET_G(TopFolder)}\90_System\90_Log\ErrorLog.txt

文字コード

SJIS

方式

追加書き込み (日単位)

バッチ設定

PDFからXDW変換

PDFファイルをXDW文書に変換します。コンソールアプリ「createDocumentFromAppFile.exe」を呼び出して処理を実行します。

ログ設定

共通ログ設定の内容でログを出力する。

  • ファイルの繰り返し1
    Loop File

メイン画面のファイルリストを対象に繰り返し処理を行う。

ループ毎にユーザーデータをクリアする。

  • コマンド1
    Command Execute

以下のコマンドを実行する。

コマンド

{%GET_G(TopFolder)}\90_System\10_Tool\createDocumentFromAppFile\createDocumentFromAppFile.exe

パラメータ

-i "{%GET(FullPathFileName)}" -o "{%GET_G(TopFolder)}\20_変換済み\{%GET(FileNameWithoutExtension)}.xdw" -nusa -async -matw -pto 600 -saf "{%GET_G(TopFolder)}\30_処理済み\{%DATE(yyyy\\MM\\dd)}" -faf "{%GET_G(TopFolder)}\15_エラー" -slf "{%GET_G(TopFolder)}\90_System\90_Log\10_CommandLog\Log_{%DATE(yyyyMMdd)}.txt" -flf "{%GET_G(TopFolder)}\90_System\90_Log\10_CommandLog\ErrorLog_{%DATE(yyyyMMdd)}.txt" -wf "{%GET_G(TopFolder)}\90_System\20_Temp" -z "{%GET_G(TopFolder)}\90_System\20_Temp\result.txt"

環境変数

名前

値

  • 結果判定
    Macro Execute

以下のマクロを実行する。

{%READ_FILE({%GET_G(TopFolder)}\90_System\20_Temp\result.txt,result,SJIS,LINE)}

#結果ファイルの1行目の終了コードを判定
{%IF({%GET_U(result,1)}!=0,
  {%IF({%REGEX_CAPTURE((非同期プロセス数が上限に達しています),{%GET_U(result,2)})}!=,
    #非同期プロセス数が上限に達していますの場合
  ,
    #結果ファイルの2行目のエラーメッセージでエラーを発生させる
    {%RAISE_ERROR({%GET_U(result,2)})}
  )}
,)}
  • 条件分岐1
    If

以下の条件を判定して処理を分岐する。

処理階層内のエラー回数が1回以上。

  • 満たしている場合
    If Then
  • ファイル移動1
    Move File

文書を以下の通り移動する。

移動元

{%GET(FullPathFileName)}

移動先

{%GET_G(TopFolder)}\15_エラー

移動先に同名の文書がある場合は、ファイル名に連番を付与する。

監視設定(eDocArrangement 2 Schedulerの設定)

No. / 設定名

1 PDFからXDW変換

実行対象

PDFからXDW変換

監視フォルダ

{%GET_G(TopFolder)}\10_XDW変換

拡張子

*.pdf

下位フォルダ

対象にしない

スケジュール

一定間隔 00:00:10

常時ログ出力

しない

オープンチェック

オープンチェックする。(3秒)

サイズチェック

しない

実行条件

動作確認

以下の動画をご覧ください。