PDFからQRコードを読み取りリネーム

概要

監視フォルダに格納されたPDFの1ページ目に貼られているQRコードの内容を読み取り、それを文書のファイル名としてリネームします。

10_入力
scan20260913.pdf
読み取り成功
20_出力
A001.pdf
読み取り失敗
30_エラー
scan20260913.pdf
  • QRコードはPDFのページをイメージに変換して読み取るので、スキャンしたPDFでも読み取れます。

  • この設定では1ページ目だけを読み取っていますが、ページ番号に All を指定すれば全ページから読み取れます。

  • QRコードが読み取れなかったPDFと、処理中にエラーになったPDFは 30_エラー へ分けて移動し、理由をエラーログに残します。取りこぼしに気付けます。

  • DocuWorksがインストールされていない環境でも動作します。

処理の実行デモ

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

設定作成と処理の実行(2分45秒)

設定の前準備

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

PDFからQRコードを読み取りリネーム.ZIP ZIP ファイル・26.3 KB
フォルダ構成と、動作を試すためのPDF(Test01.pdf〜Test07.pdf)が入っています。Cドライブのルートに解凍してください。

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

  • C:\Home\eDocArrangement2\Demo\PDFからQRコードを読み取りリネーム
    • 10_入力監視フォルダ。ここに置かれたPDFを処理します。
      • Test01.pdf 〜 Test07.pdf動作確認用のPDF。
    • 20_出力QRコードを読み取れたPDFの移動先。ファイル名の後ろにQRの内容が付きます。
    • 30_エラー読み取れなかったPDFと、エラーになったPDFの移動先。
    • 90_System
      • 90_Log実行ログとエラーログの出力先。

設定ファイル

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

PDFからQRコードを読み取りリネーム_設定.zip ZIP ファイル・83.3 KB
eDocArrangement2 の設定ファイル(eDocArrangement2.db/eDocArrangement2Schedule.db)です。

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

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

解凍する前にご確認ください

設定ファイルは丸ごと置き換わります。すでにお使いの設定がある場合は、上記フォルダの eDocArrangement2.db と eDocArrangement2Schedule.db を別の場所にコピーして控えてから解凍してください。

スケジュール設定

スケジュール設定一覧

No.

項目

内容

1

PDFからQRコードを読み取りリネーム

実行対象

PDFからQRコードを読み取りリネーム

監視フォルダ

{%GET_G(TopFolder)}\PDFからQRコードを読み取りリネーム\10_入力
ファイル名 *.pdf / 下位フォルダは対象外(正規表現無効)

スケジュール

一定間隔 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

バッチ設定

バッチ設定一覧

PDFからQRコードを読み取りリネーム

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

方式

追加書き込み (日単位)

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

MainFileListを対象に繰り返し処理を行う。

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

エラー発生時に以下の処理を実行する。

{%PDF_CLOSE()}
  • QRコード読み取り
    Macro Execute

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

#処理結果の判定フラグを初期化する
{%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,メッセージ)})}
)}
  • システムエラー判定
    If

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

処理階層内のエラー回数が0回。

  • エラーなし
    If Then
  • QR読み取り判定
    If

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

{%GET_U(wk,結果)}
  • QR読み取り成功
    If Then
  • QRの内容を付けて出力フォルダへ移動
    Move File

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

移動元

{%GET(FullPathFileName)}

移動先

{%GET_G(TopFolder)}\PDFからQRコードを読み取りリネーム\20_出力

ファイル名を「{%GET(FileNameWithoutExtension)}_{%GET_U(wk,QR名)}{%GET(Extension)}」に変更する。

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

  • QR読み取り失敗
    If Else
  • QR読み取り失敗のPDFをエラーフォルダへ移動
    Move File

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

移動元

{%GET(FullPathFileName)}

移動先

{%GET_G(TopFolder)}\PDFからQRコードを読み取りリネーム\30_エラー

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

  • エラーあり
    If Else
  • エラー内容をログに出力
    Macro Execute

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

#システムエラーの内容をエラーログに出力する
{%WRITE_ERROR_LOG(処理エラー: {%GET(FileName)} 内容={%GET_ERROR_MESSAGE()})}
  • エラーが発生したPDFをエラーフォルダへ移動
    Move File

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

移動元

{%GET(FullPathFileName)}

移動先

{%GET_G(TopFolder)}\PDFからQRコードを読み取りリネーム\30_エラー

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