指示書に印刷された注文番号をバーコードリーダーで読み取り、該当の納品書をプリンターに印刷します。
バーコードリーダーからの入力を処理するアプリケーションは BarcodeUI を使用します。
以下の動画をご覧ください。
C:\Homeの下に、以下のような構成でフォルダを作り、準備します。
フォルダ構成は以下の通りです。
以下から「printToPdfFromDocuWorksFile」をダウンロードして、上記の「\90_System\80_Tool」に解凍してください。
https://www.technostyle.net/edoc/edocarrangement2/printToPdfFromDocuWorksFile/index.html
バーコード入力したコードからPDF文書をXDW変換して印刷_設定.zip
以下のフォルダに解凍すると設定が適用されます。
C:\Users\ユーザー名\AppData\Roaming\TechnoStyle\eDocArrangement2
以下のフォルダに解凍すると設定が適用されます。
C:\Users\ユーザー名\AppData\Roaming\TechnoStyle\BarcodeUI
グローバルデータの内容は以下の通りです。
| 名前 | 値 |
|---|---|
TopFolder |
C:\Home\eDocArrangement2\Demo\バーコード入力したコードからPDF文書をXDW変換して印刷 |
SystemFolder |
{%GET_G(TopFolder)}\90_System
|
プリンター名 |
Canon LBP622C (リダイレクト 2) |
printToPdfFromDocuWorksFile |
{%GET_G(TopFolder)}\90_System\80_Tool\printToPdfFromDocuWorksFile\printToPdfFromDocuWorksFile.exe
|
TempFolder |
{%GET_G(SystemFolder)}\10_Temp
|
保管文書 |
{%GET_G(TopFolder)}\10_文書
|
Excel書き込み |
#印刷履歴ファイルの存在チェック |
共通ログ設定の内容でログを出力する。
以下の条件を判定して処理を分岐する。
{%IF({%GET(OptionString)}!=,True,False)}
以下のマクロを実行する。
#印刷ファイル名を設定(xdw)
{%SET_U(属性,XDWファイル名,納品書{%GET(OptionString)}.xdw)}
#XDWファイルの存在チェック
{%IF({%EXISTS_FILE({%GET_G(保管文書)}\{%GET_U(属性,XDWファイル名)})}=True,
#XDWファイルを一時フォルダに移動
{%COPY_FILE({%GET_G(保管文書)}\{%GET_U(属性,XDWファイル名)},{%GET_G(TempFolder)}\10_xdw変換_work\{%GET_U(属性,XDWファイル名)})}
{%SET_U(属性,判定,True)}
,
#印刷ファイル名を設定(pdf)
{%SET_U(属性,印刷ファイル名,納品書{%GET(OptionString)}.pdf)}
#PDFファイルの存在チェック
{%IF({%EXISTS_FILE({%GET_G(保管文書)}\{%GET_U(属性,印刷ファイル名)})}=True,
{%SET_U(属性,XDWファイル名,{%GET_FILE_NAME_WITHOUT_EXTENSION({%GET_U(属性,印刷ファイル名)})}.xdw)}
{%SET_U(属性,判定,True)}
,
{%WRITE_LOG(BMSG(ERR)[{%GET_U(属性,印刷ファイル名)}が見つかりません。])}
{%SET_U(属性,判定,False)}
)}
)}
以下の条件を判定して処理を分岐する。
{%GET_U(属性,判定)}
以下の条件を判定して処理を分岐する。
{%IF({%RIGHT({%GET_U(属性,印刷ファイル名)},3)}=pdf,True,False)}
以下のファイルを対象にDocuWorks文書変換を行う。
{%GET_G(保管文書)}\{%GET_U(属性,印刷ファイル名)}
以下のフォルダに変換出力する。
{%GET_G(TempFolder)}\10_xdw変換_work
ファイル名を「{%GET_U(属性,XDWファイル名)}」に変更する。
出力先に同名の文書がある場合は、上書きする。
PDFをイメージ変換してからDW変換を行う。イメージ解像度は「200」とする。
圧縮方式は、標準(JPEG)とする。
変換後の用紙サイズは、イメージが収まる定型サイズにする。
以下のマクロを実行する。
#変換先フォルダ
{%SET_U(属性,変換先,{%GET_G(TopFolder)}\30_印刷)}
#変換用作業フォルダ
{%SET_U(属性,変換Work,{%GET_G(TempFolder)}\20_pdf変換_work)}
#コマンド実行結果ファイルのパス
{%SET_U(属性,ResultPath,{%GET_G(TempFolder)}\result.txt)}
#出力ファイルが既にある場合は削除
{%SET_U(属性,印刷ファイル名,納品書{%GET(OptionString)}.pdf)}
{%DELETE_FILE({%GET_U(属性,変換先)}\{%GET_U(属性,印刷ファイル名)})}
#XDWからPDF変換 コマンド引数
{%SET_U(属性,コマンド引数,{%REPLACE(
-i "{%GET_G(TempFolder)}\10_xdw変換_work\{%GET_U(属性,XDWファイル名)}"
-o "{%GET_U(属性,変換先)}\{%GET_U(属性,印刷ファイル名)}"
-p "DocuWorks PDF"
-ppto 20
-ftwto
-slf "{%GET_G(SystemFolder)}\90_Log\CommandLog\Log_{%DATE(yyyyMMdd)}.txt"
-flf "{%GET_G(SystemFolder)}\90_Log\CommandLog\ErrorLog_{%DATE(yyyyMMdd)}.txt"
-wf "{%GET_U(属性,変換Work)}"
-z "{%GET_U(属性,ResultPath)}"
,<CrLf>, )})}
#コマンド実行
{%COMMAND({%GET_G(printToPdfFromDocuWorksFile)},{%GET_U(属性,コマンド引数)})}
デモ用にPDF変換する処理にしてあります。 プリンターに印刷する場合は以下の「プリンターに印刷」を右クリックメニューから処理を切り取りして、コメントの直前に貼り付けしてください。 PDF変換は削除してください。 プリンター名はグローバルデータで変更できます。
以下のマクロを実行する。
#変換先フォルダ
{%SET_U(属性,変換先,{%GET_G(TopFolder)}\30_印刷)}
#変換用作業フォルダ
{%SET_U(属性,変換Work,{%GET_G(TempFolder)}\20_pdf変換_work)}
#コマンド実行結果ファイルのパス
{%SET_U(属性,ResultPath,{%GET_G(TempFolder)}\result.txt)}
#XDWからPDF変換 コマンド引数
{%SET_U(属性,コマンド引数,{%REPLACE(
-i "{%GET_G(TempFolder)}\10_xdw変換_work\{%GET_U(属性,XDWファイル名)}"
-p "{%GET_G(プリンター名)}"
-ppto 20
-ftwto
-slf "{%GET_G(SystemFolder)}\90_Log\CommandLog\Log_{%DATE(yyyyMMdd)}.txt"
-flf "{%GET_G(SystemFolder)}\90_Log\CommandLog\ErrorLog_{%DATE(yyyyMMdd)}.txt"
-wf "{%GET_U(属性,変換Work)}"
-z "{%GET_U(属性,ResultPath)}"
,<CrLf>, )})}
#コマンド実行
{%COMMAND({%GET_G(printToPdfFromDocuWorksFile)},{%GET_U(属性,コマンド引数)})}
以下のマクロを実行する。
{%READ_FILE({%GET_U(属性,ResultPath)},result,SJIS,LINE)}
#結果ファイルの1行目の終了コードを判定
{%IF({%GET_U(result,1)}!=0,
{%IF({%REGEX_CAPTURE((非同期プロセス数が上限に達しています),{%GET_U(result,2)})}!=,
#非同期プロセス数が上限に達していますの場合
,
#結果ファイルの2行目のエラーメッセージでエラーを発生させる
{%RAISE_ERROR({%GET_U(result,2)})}
)}
,)}
以下の条件を判定して処理を分岐する。
処理階層内のエラー回数が0回。
以下のマクロを実行する。
#印刷履歴ファイルのパスを設定
{%SET_U(wk,path,{%GET_G(TopFolder)}\20_印刷履歴\{%DATE(yyyy\\MM)}\印刷履歴_{%DATE(yyyyMMdd)}.xlsx)}
#印刷履歴に追加
{%GET_G(Excel書き込み)}
以下の条件を判定して処理を分岐する。
処理階層内のエラー回数が1回以上。
以下のマクロを実行する。
#正規のファイルがオープンエラーだった場合の救済処理
#簡易的な対応なので救済ファイルも開かれていた場合は記録がされません。
#印刷履歴ファイルのパスを設定
{%SET_U(wk,path,{%GET_G(TopFolder)}\20_印刷履歴\{%DATE(yyyy\\MM)}\印刷履歴_{%DATE(yyyyMMdd)}_オープンエラー未登録データ.xlsx)}
#印刷履歴に追加
{%GET_G(Excel書き込み)}
以下のマクロを実行する。
#印刷用一時ファイルを削除
{%DELETE_FILE({%GET_G(TempFolder)}\10_xdw変換_work\{%GET_U(属性,XDWファイル名)})}
#完了メッセージ送信
{%WRITE_LOG(BMSG(OK)[{%GET_U(属性,印刷ファイル名)}を印刷しました。])}