DR-C125の「他のアプリへ送る」が便利すぎる
DR-C125のCaptureOnTouchは出力方法に「他のアプリへ送る」を選ぶとスキャン後に起動する後続ジョブを指定することができます。
この機能を使用すればスキャン完了と同時に読取後の加工を自動で開始することができます。
ただし拡張子がexeのファイルしか指定できないので、exeファイルを作成する必要があります。
というわけでexeファイルを作ってみました。
次の機能があります。
このプログラムを使用するためには次の前提条件があります。
- ZBarがインストールされていること
- BatchLP(ChainLP)がインストールされていること
ここでexeを公開しても、自分ならこんなブログから落とした野良exeは怖くて実行できないので、ソースコードで公開します。
PCのことがちょっとはわかる人なら自力でexeにできるよう、コンパイルの手順も書いておきます。
ソースコード
postscan.js
import System.Windows.Forms import System.Xml import System.Diagnostics import System.Text import System.IO try { //設定ファイルを読み込む var configXml = new XmlDocument() var exeFile = System.Reflection.Assembly.GetExecutingAssembly().Location var exeDir = Path.GetDirectoryName(exeFile) configXml.Load(exeDir + "\\" + '/config.xml') var pathes = configXml.SelectNodes("/postscan/config") var config = {} for (var i = 0; i < pathes.Count; i++) { var path = pathes[i] config[path.Attributes['name'].Value] = path.InnerText } //バーコードを読み取る var p = new Process() p.StartInfo.UseShellExecute = false p.StartInfo.RedirectStandardOutput = true p.StartInfo.RedirectStandardError = true p.StartInfo.FileName = config['ZBarimg'] p.StartInfo.Arguments = "--xml " + config['SrcDir'] + "\\" + config['BarcodeImage'] p.Start() var out = p.StandardOutput.ReadToEnd() var err = p.StandardError.ReadToEnd() p.WaitForExit() var exitCode = p.ExitCode //バーコードが正常に読み取れたかどうかをチェック if (exitCode != '0' || out.Trim.length == 0) { throw new Error('画像からバーコードを読み取れませんでした。' + "\n" + err + "\n") } //バーコードの読み取り結果からISBNコードを取得 var barcodeXml = new XmlDocument() barcodeXml.LoadXml(out) var manager = new XmlNamespaceManager(barcodeXml.NameTable) manager.AddNamespace('zbar', 'http://zbar.sourceforge.net/2008/barcode') var barcodes = barcodeXml.SelectNodes('//zbar:symbol/zbar:data', manager) var isbn = barcodes[barcodes.Count - 1].InnerText //スキャンしたファイルの保存ディレクトリをISBNと同じ名前にリネーム var newDir = config['DestDir'] + "\\" + isbn Directory.Move(config['SrcDir'], newDir) //新規にスキャンしたファイルの保存ディレクトリを作成 Directory.CreateDirectory(config['SrcDir']) //BatchLPにリネームしたディレクトリを登録 Process.Start(config['BatchLP'], newDir) } catch (e) { MessageBox.Show(e.toString()) }
以上の内容をメモ帳にコピペし、postscan.jsと名前をつけて保存してください。
ただし、保存ダイアログで文字コードにShift-JIS(なければSJIS、それもなければANSI)を選択して保存してください。
config.xml
<postscan> <!-- BatchLP.exeのフルパス --> <config name="BatchLP">E:\Software\ChainLP\BatchLP.exe</config> <!-- ZBarimg.exeのフルパス --> <config name="ZBarimg">C:\Program Files (x86)\ZBar\bin\zbarimg.exe</config> <!-- スキャンしたファイルが保存されるディレクトリのフルパス --> <config name="SrcDir">E:\自炊temp\scan</config> <!-- バーコードと同じ名前のディレクトリの作成先のフルパス --> <config name="DestDir">E:\自炊temp</config> <!-- バーコードを含む画像ファイルの名前 --> <config name="BarcodeImage">temp_000.bmp</config> </postscan>
以上の内容をメモ帳にコピペし、各自の環境に合わせて設定を変更してください。
設定を変更したらpostscan.jsと名前をつけて保存してください。
ただし、保存ダイアログで文字コードにUTF-8を選択して保存してください。
コンパイルと設定
コンパイル
コマンドプロンプトを起動します。
[スタートボタン]→[すべてのプログラム]→[アクセサリ]→[コマンドプロンプト]
コマンドプロンプトに次のコマンドを入力し、Enterキーを押下します。
C:\Windows\Microsoft.NET\Framework\v2.0.50727\jsc /out:C:\postscan.exe "postscan.jsのフルパス"
ただし次の点に注意が必要です。
- postscan.jsのフルパスはダブルクォーテーションで囲うことを忘れないでください。
- "v2.0.50727"の部分は人によっては異なるかもしれません。
- その場合、C:\Windows\Microsoft.NET\Frameworkに"v2.0.〜"という名前のフォルダがあると思いますので、その名前に置き換えてコマンドを実行してください。
- C:\Windows\Microsoft.NET\Framework自体がない場合はWindowsUpdateで.NET Frameworkをインストールしてください。