監視フォルダに格納されたPDFの1ページ目に貼られているQRコードの内容を読み取り、それを文書のファイル名としてリネームします。
QRコードはPDFのページをイメージに変換して読み取るので、スキャンしたPDFでも読み取れます。
この設定では1ページ目だけを読み取っていますが、ページ番号に All を指定すれば全ページから読み取れます。
QRコードが読み取れなかったPDFと、処理中にエラーになったPDFは 30_エラー へ分けて移動し、理由をエラーログに残します。取りこぼしに気付けます。
DocuWorksがインストールされていない環境でも動作します。
以下の動画をご覧ください。
C:\Home の下に、以下のような構成でフォルダを作り、準備します。
フォルダ構成は以下の通りです。
以下のリンクから完成した設定をダウンロードしていただくことができます。
以下のフォルダに解凍すると設定が適用されます。
C:\Users\ユーザー名\AppData\Roaming\TechnoStyle\eDocArrangement2
設定ファイルは丸ごと置き換わります。すでにお使いの設定がある場合は、上記フォルダの eDocArrangement2.db と eDocArrangement2Schedule.db を別の場所にコピーして控えてから解凍してください。
No. |
項目 |
内容 |
|---|---|---|
1 |
PDFからQRコードを読み取りリネーム |
|
実行対象 |
||
監視フォルダ |
{%GET_G(TopFolder)}\PDFからQRコードを読み取りリネーム\10_入力 |
|
スケジュール |
一定間隔 0:0:10 |
|
動作 |
ファイルがない場合はログ出力しない |
|
チェック |
オープン する(3秒) / サイズ しない / 取得数制限 しない |
|
設定実行時のエラーをイベントログに出力しない。
ログを出力する。(画面のログの最大表示行数:500行)
以下の内容でログを出力する。
実行ログファイル名 |
{%GET_G(SystemFolder)}\90_Log\Log.txt |
エラーログファイル名 |
{%GET_G(SystemFolder)}\90_Log\ErrorLog.txt |
文字コード |
UTF-8 |
方式 |
追加書き込み (日単位) |
グローバルデータの内容は以下の通りです。
名前 |
値 |
|---|---|
TopFolder |
C:\Home\eDocArrangement2\Demo |
SystemFolder |
{%GET_G(TopFolder)}\90_System
|
10_入力のPDFの1ページ目からQRコードを読み取り、元のファイル名の後ろにQRの内容を付けて20_出力へ移動する。QRが読み取れなかったPDFとエラーになったPDFは30_エラーへ移動し、エラーログに記録する。
以下の内容でログを出力する。
実行ログファイル名 |
{%GET_G(TopFolder)}\PDFからQRコードを読み取りリネーム\90_System\90_Log\Log.txt |
エラーログファイル名 |
{%GET_G(TopFolder)}\PDFからQRコードを読み取りリネーム\90_System\90_Log\ErrorLog.txt |
文字コード |
UTF-8 |
方式 |
追加書き込み (日単位) |
MainFileListを対象に繰り返し処理を行う。
ループ毎にユーザーデータをクリアする。
エラー発生時に以下の処理を実行する。
{%PDF_CLOSE()}
以下のマクロを実行する。
#処理結果の判定フラグを初期化する
{%SET_U(wk,結果,True)}
#PDFファイルをオープンする
{%PDF_OPEN({%GET(FullPathFileName)})}
#1ページ目のQRコードを読み取る(認識優先・文字コードは自動判定)
{%SET_U(wk,QR件数,{%PDF_DECODE_QR(1,QR結果,RecognitionPriority,自動)})}
#PDFファイルをクローズする
{%PDF_CLOSE()}
#読み取れた場合はQRの内容をファイル名用に取り出す(ファイル名に使えない文字はファイル移動処理が自動で除去する)
{%IF({%GET_U(wk,QR件数)}=0,
{%SET_U(wk,結果,False)}
{%SET_U(wk,メッセージ,1ページ目からQRコードを読み取れませんでした)}
,
{%SET_U(wk,QR名,{%GET_U(QR結果,Pages,1,1,Data)})}
)}
#読み取り結果をログに出力する
{%IF({%GET_U(wk,結果)}=True,
{%WRITE_LOG(QRコード読み取り成功: {%GET(FileName)} 検出数={%GET_U(wk,QR件数)} 内容={%GET_U(wk,QR名)})}
,
{%WRITE_ERROR_LOG(QRコード読み取り失敗: {%GET(FileName)} 理由={%GET_U(wk,メッセージ)})}
)}
以下の条件を判定して処理を分岐する。
処理階層内のエラー回数が0回。
以下の条件を判定して処理を分岐する。
{%GET_U(wk,結果)}
文書を以下の通り移動する。
移動元 |
{%GET(FullPathFileName)} |
移動先 |
{%GET_G(TopFolder)}\PDFからQRコードを読み取りリネーム\20_出力 |
ファイル名を「{%GET(FileNameWithoutExtension)}_{%GET_U(wk,QR名)}{%GET(Extension)}」に変更する。
移動先に同名の文書がある場合は、ファイル名に連番を付与する。
文書を以下の通り移動する。
移動元 |
{%GET(FullPathFileName)} |
移動先 |
{%GET_G(TopFolder)}\PDFからQRコードを読み取りリネーム\30_エラー |
移動先に同名の文書がある場合は、ファイル名に連番を付与する。
以下のマクロを実行する。
#システムエラーの内容をエラーログに出力する
{%WRITE_ERROR_LOG(処理エラー: {%GET(FileName)} 内容={%GET_ERROR_MESSAGE()})}
文書を以下の通り移動する。
移動元 |
{%GET(FullPathFileName)} |
移動先 |
{%GET_G(TopFolder)}\PDFからQRコードを読み取りリネーム\30_エラー |
移動先に同名の文書がある場合は、ファイル名に連番を付与する。