xml:space="preserve">
注文書 9 申し込み書 プラン A 番号 登録 A0001 名称 コピー用紙 ブルー アノテ
設定例

バーコード入力したコードからPDF文書をXDW変換して印刷

概要

指示書に印刷された注文番号をバーコードリーダーで読み取り、該当の納品書をプリンターに印刷します。

バーコードリーダー
Barcode UI
起動
eDocArrangement
該当ファイルを検索
PDF
XDW
印刷
レーザープリンタ

バーコードリーダーからの入力を処理するアプリケーションは BarcodeUI を使用します。

動作イメージ

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

設定の前準備

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

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

バーコード入力したコードからPDF文書をXDW変換して印刷_フォルダ構成.zip

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

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

  • C:\Home\eDocArrangement2\Demo\バーコード入力したコードからPDF文書をXDW変換して印刷
    • 10_文書
      このフォルダにバーコードから読み取ったコードをファイル名に持つ納品書を配置します。
      • 指示書0001.pdf
      • 指示書0002.pdf
      • 指示書0003.pdf
      • 納品書0001.pdf
      • 納品書0002.pdf
      • 納品書0003.pdf
      • 納品書0003.xdw
    • 20_印刷履歴
      印刷履歴が出力されます。
    • 30_印刷
      このフォルダはデモ用にPDF変換したファイルが格納されるフォルダです。プリンターに印刷する場合はこのフォルダは使用しません。
    • 90_System
      • 10_Temp
        • 10_xdw変換_work
        • 20_pdf変換_work
        • result.txt
      • 20_doc
        • 印刷履歴テンプレート.xlsx
          印刷履歴のExcelファイルのテンプレートです。
      • 80_Tool
        ここにprintToPdfFromDocuWorksFileを解凍してください。
        • printToPdfFromDocuWorksFile
      • 90_Log

以下から「printToPdfFromDocuWorksFile」をダウンロードして、上記の「\90_System\80_Tool」に解凍してください。

設定ファイル

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

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

バーコード入力したコードからPDF文書をXDW変換して印刷_設定.zip

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

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

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

BarcodeUISetting.zip

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

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({%EXISTS_FILE({%GET_U(wk,path)})}=False,
#印刷履歴ファイルが存在しない場合はテンプレートからコピー
{%COPY_FILE({%GET_G(SystemFolder)}\20_doc\印刷履歴テンプレート.xlsx,{%GET_U(wk,path)})}
,)}

#印刷履歴ファイルを開く
{%EXCEL_OPEN_BOOK({%GET_U(wk,path)})}

#空の行番号を取得
{%SET_U(wk,行番号,{%EXCEL_FIND_FIRST_EMPTY_ROW(印刷履歴,A,2)})}

#印刷履歴にデータを設定
{%EXCEL_SET_CELL_VALUES(印刷履歴,A{%GET_U(wk,行番号)},{%DATE(yyyy/MM/dd HH:mm:ss)})}
{%EXCEL_SET_CELL_VALUES(印刷履歴,B{%GET_U(wk,行番号)},{%DATE(yyyy/MM/dd HH:mm:ss)})}
{%EXCEL_SET_CELL_VALUES(印刷履歴,C{%GET_U(wk,行番号)},{%GET(OptionString)})}
{%EXCEL_SET_CELL_VALUES(印刷履歴,D{%GET_U(wk,行番号)},{%GET_U(属性,印刷ファイル名)})}

#印刷履歴ファイルを保存
{%EXCEL_CLOSE_BOOK()}

バッチ設定

バッチ設定一覧

バーコード入力したコードから文書を印刷

ログ設定

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

条件分岐1

If

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

{%IF({%GET(OptionString)}!=,True,False)}

満たしている場合

If Then

ファイル存在チェック

Macro Execute

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

#印刷ファイル名を設定(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)}
  )}
)}

条件分岐2

If

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

{%GET_U(属性,判定)}

満たしている場合

If Then

条件分岐4

If

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

{%IF({%RIGHT({%GET_U(属性,印刷ファイル名)},3)}=pdf,True,False)}

満たしている場合

If Then

DocuWorks文書変換1

Convert DocuWorks File

以下のファイルを対象にDocuWorks文書変換を行う。

{%GET_G(保管文書)}\{%GET_U(属性,印刷ファイル名)}

以下のフォルダに変換出力する。

{%GET_G(TempFolder)}\10_xdw変換_work

ファイル名を「{%GET_U(属性,XDWファイル名)}」に変更する。

出力先に同名の文書がある場合は、上書きする。

PDFをイメージ変換してからDW変換を行う。イメージ解像度は「200」とする。

圧縮方式は、標準(JPEG)とする。

変換後の用紙サイズは、イメージが収まる定型サイズにする。

満たしていない場合

If Else

PDF変換

Macro Execute

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

#変換先フォルダ
{%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(属性,コマンド引数)})}

コメント1

Comment

デモ用にPDF変換する処理にしてあります。
プリンターに印刷する場合は以下の「プリンターに印刷」を右クリックメニューから処理を切り取りして、コメントの直前に貼り付けしてください。
PDF変換は削除してください。

プリンター名はグローバルデータで変更できます。

プリンターに印刷

Macro Execute

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

#変換先フォルダ
{%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(属性,コマンド引数)})}

結果判定

Macro Execute

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

{%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)})}
  )}
,)}

条件分岐3

If

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

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

満たしている場合

If Then

印刷履歴出力

Macro Execute

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

#印刷履歴ファイルのパスを設定
{%SET_U(wk,path,{%GET_G(TopFolder)}\20_印刷履歴\{%DATE(yyyy\\MM)}\印刷履歴_{%DATE(yyyyMMdd)}.xlsx)}

#印刷履歴に追加
{%GET_G(Excel書き込み)}

条件分岐5

If

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

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

満たしている場合

If Then

印刷履歴出力1

Macro Execute

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

#正規のファイルがオープンエラーだった場合の救済処理
#簡易的な対応なので救済ファイルも開かれていた場合は記録がされません。

#印刷履歴ファイルのパスを設定
{%SET_U(wk,path,{%GET_G(TopFolder)}\20_印刷履歴\{%DATE(yyyy\\MM)}\印刷履歴_{%DATE(yyyyMMdd)}_オープンエラー未登録データ.xlsx)}

#印刷履歴に追加
{%GET_G(Excel書き込み)}

満たしていない場合

If Else

後処理

Macro Execute

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

#印刷用一時ファイルを削除
{%DELETE_FILE({%GET_G(TempFolder)}\10_xdw変換_work\{%GET_U(属性,XDWファイル名)})}

#完了メッセージ送信
{%WRITE_LOG(BMSG(OK)[{%GET_U(属性,印刷ファイル名)}を印刷しました。])}

満たしていない場合

If Else

満たしていない場合

If Else

満たしていない場合

If Else