監視フォルダに格納されたPDFファイルからテキスト抽出を行い特定の文字を取得後、PDFのカスタムプロパティに設定します。
XDW文書への変換は、コンソールアプリ「 pdfCommandUtility2 」をコマンド実行で呼び出して行います。
実行すると以下の様に動作します。
「pdfCommandUtility2」の詳細は、 仕様書 ご覧下さい。
C:\Homeの下に、以下のような構成でフォルダを作り、準備します。
フォルダ構成は以下の通りです。
以下のフォルダに解凍すると設定が適用されます。
C:\Users\ユーザー名\AppData\Roaming\TechnoStyle\eDocArrangement2
グローバルデータの内容は以下の通りです。トップフォルダを変更する場合は、以下の定義を変更してください。グローバルデータは、「共通設定」から変更できます。
名前 | 値 |
---|---|
TopFolder |
C:\Home\eDocArrangement2\Demo\PDFのテキスト抽出と属性設定 |
pdfCommandUtility |
{%GET_G(TopFolder)}\90_System\10_Tool\pdfCommandUtility2\pdfCommandUtility2.exe |
詳しい設定方法は、 設定例(共通)グローバルデータとログの設定 を参照して下さい。
実行ログファイル名 | {%GET_G(TopFolder)}\90_System\90_Log\Log.txt |
---|---|
エラーログファイル名 | {%GET_G(TopFolder)}\90_System\90_Log\ErrorLog.txt |
文字コード | SJIS |
方式 | 追加書き込み (日単位) |
共通ログ設定の内容でログを出力する。
メイン画面のファイルリストを対象に繰り返し処理を行う。
ループ毎にユーザーデータをクリアする。
以下のマクロを実行する。
#コマンド実行結果ファイルのパス {%SET_U(属性,ResultPath,{%GET_G(TopFolder)}\90_System\20_Temp\result.txt)} #テキスト抽出結果ファイルのパス {%SET_U(属性,TextPath,{%GET_G(TopFolder)}\90_System\20_Temp\text.txt)} #コマンド引数 #-pf 対象PDFファイル #-tef 抽出結果ファイル #-tep 抽出ページ #-tem 抽出モード #-z 結果ファイル {%SET_U(属性,コマンド引数,{%REPLACE( -pf "{%GET(FullPathFileName)}" -tef "{%GET_U(属性,TextPath)}" -tep 1 -tem text -z "{%GET_U(属性,ResultPath)}" ,<CrLf>, )})} #テキスト抽出 {%COMMAND({%GET_G(pdfCommandUtility)},{%GET_U(属性,コマンド引数)})}
以下のマクロを実行する。
{%READ_FILE({%GET_U(属性,ResultPath)},result,SJIS,LINE)} #結果ファイルの1行目の終了コードを判定 {%IF({%GET_U(result,1)}!=0, #結果ファイルの2行目のエラーメッセージでエラーを発生させる {%RAISE_ERROR({%GET_U(result,2)})} ,)}
以下の条件を判定して処理を分岐する。
処理階層内のエラー回数が0回。
以下のマクロを実行する。
#テキスト抽出結果ファイルを読み込む {%READ_FILE({%GET_U(属性,TextPath)},text,SJIS,ALL)} #データを取得 {%SET_U(属性,申請者,{%REGEX_CAPTURE(申請者{\[(.+?)\]},{%GET_U(text,1)})})} {%SET_U(属性,申請日,{%REGEX_CAPTURE(申請日{\[(.+?)\]},{%GET_U(text,1)})})} {%SET_U(属性,件名,{%REGEX_CAPTURE(件名{\[(.+?)\]},{%GET_U(text,1)})})} {%SET_U(属性,決裁者,{%REGEX_CAPTURE(決裁者{\[(.+?)\]},{%GET_U(text,1)})})} {%WRITE_LOG(申請者:{%GET_U(属性,申請者)})} {%WRITE_LOG(申請日:{%GET_U(属性,申請日)})} {%WRITE_LOG(件名:{%GET_U(属性,件名)})} {%WRITE_LOG(決裁者:{%GET_U(属性,決裁者)})} {%IF({%GET_U(属性,申請者)}=, #取得できなかった場合 {%SET_U(属性,判定,False)} , #取得できた場合 {%SET_U(属性,判定,True)} )}
以下の条件を判定して処理を分岐する。
{%GET_U(属性,判定)}
以下のマクロを実行する。
#コマンド実行結果ファイルのパス {%SET_U(属性,ResultPath,{%GET_G(TopFolder)}\90_System\20_Temp\result.txt)} #コマンド引数 #-pf 対象PDFファイル #-acp カスタムプロパティ設定 #-z 結果ファイル {%SET_U(属性,コマンド引数,{%REPLACE( -pf {%GET(FullPathFileName)} -acp "申請者" "{%GET_U(属性,申請者)}" "申請日" "{%GET_U(属性,申請日)}" "件名" "{%GET_U(属性,件名)}" "決裁者" "{%GET_U(属性,決裁者)}" -z "{%GET_U(属性,ResultPath)}" ,<CrLf>, )})} #カスタムプロパティ設定 {%IF({%COMMAND({%GET_G(pdfCommandUtility)},{%GET_U(属性,コマンド引数)})}=0, {%WRITE_LOG(カスタムプロパティに設定を行いました。対象PDF[{%GET(FullPathFileName)}])} ,)}
以下のマクロを実行する。
{%READ_FILE({%GET_U(属性,ResultPath)},result,SJIS,LINE)} #結果ファイルの1行目の終了コードを判定 {%IF({%GET_U(result,1)}!=0, #結果ファイルの2行目のエラーメッセージでエラーを発生させる {%RAISE_ERROR({%GET_U(result,2)})} ,)}
以下の条件を判定して処理を分岐する。
処理階層内のエラー回数が0回。
文書を以下の通り移動する。
移動元 | {%GET(FullPathFileName)} |
---|---|
移動先 | {%GET_G(TopFolder)}\10_決裁申請書リネーム処理\20_処理後\{%GET(FolderName)} |
ファイル名を「決裁申請書_{%GET_U(属性,申請日)}_{%GET_U(属性,申請者)}.pdf」に変更する。
移動先に同名の文書がある場合は、ファイル名に連番を付与する。
コピー後に削除を行う。
文書を以下の通り移動する。
移動元 | {%GET(FullPathFileName)} |
---|---|
移動先 | {%GET_G(TopFolder)}\10_決裁申請書リネーム処理\20_処理後\{%GET(FolderName)} |
移動先に同名の文書がある場合は、ファイル名に連番を付与する。
コピー後に削除を行う。
文書を以下の通り移動する。
移動元 | {%GET(FullPathFileName)} |
---|---|
移動先 | {%GET_G(TopFolder)}\10_決裁申請書リネーム処理\20_処理後\{%GET(FolderName)} |
移動先に同名の文書がある場合は、ファイル名に連番を付与する。
コピー後に削除を行う。
文書を以下の通り移動する。
移動元 | {%GET(FullPathFileName)} |
---|---|
移動先 | {%GET_G(TopFolder)}\10_決裁申請書リネーム処理\20_処理後\{%GET(FolderName)} |
移動先に同名の文書がある場合は、ファイル名に連番を付与する。
コピー後に削除を行う。
以下の動画をご覧ください。