最終更新日
3月20日

ScanSnap

 

posted by
sakamoto

カラー イメージ スキャナ ScanSnap s500

読み取る紙を差し込んでスキャンボタンをワンプッシュ、というお手軽な操作性ではありますが、これをさらにお手軽にしてみました。

オフィスには常時稼働しているFreeBSDサーバがあるので、これに着目。

FreeBSDでもsaneでスキャン可能。

ということでScanSnapを監視して、スキャンに成功すれば、まとめて1つのPDFに変換するスクリプトを作りました。

#!/usr/bin/env ruby
require 'fileutils'
tmpdir = "/tmp/ss.#{$$}"
dstdir = "/vol/ScanSnap/"
Dir.mkdir(tmpdir)
Dir.chdir(tmpdir)
system "/usr/X11R6/bin/scanimage --format tiff --mode Color --resolution 150 -b
--source 'ADF Duplex'"
files = Array.new
Dir.foreach('.') do |file|
  next unless file =~ /^out\d+.tif$/
  pdf = file + ".pdf"
  system "/usr/local/bin/tiff2pdf -z -o #{pdf} #{file}"
  files.push pdf
end
unless files.empty?
  pdfs = files.sort do |a,b|
    a =~ /out(\d+).tif/
    a = $1.to_i
    b =~ /out(\d+).tif/
    b = $1.to_i
    a <=> b
  end
  filebase = dstdir + Time.now.strftime("%y%m%d_")
  n = 0
  t = Dir.glob(filebase + "*").sort.last
  if t
    t =~ /_(\d+)S*.pdf/
    n = $1.to_i + 1
  end
  cmd = "/usr/local/bin/gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="
  system cmd + filebase + sprintf("%03d.pdf", n) + " " + pdfs.join(' ')
  system cmd + filebase + sprintf("%03dS.pdf", n) + " " + pdfs.delete_if{|a|
    a =~ /out(\d+).tif/
    a = $1.to_i
    (a % 2) == 0
  }.join(' ')
end
Dir.chdir("/")
FileUtils.rm_rf tmpdir

(ruby, sane-backends, tiff, ghostscript-gpl などを使用しています。cronで毎分動かしたりすると良いです)

紙を束ねてScanSnapに刺すだけでPDFに書き出されます。超便利です。

とまぁ、動かすのにボタンすら押さない、という、いさぎよい、やりたいことが決まっているので無くしてしまってもいい行程を省いたインターフェースもありなんじゃないでしょうか。

確認なしで実行するのが危険な場合もありますから「適インターフェース適所」ですけども。坂本でした。

コメント

>動かすのにボタンすら押さない、という、いさぎよい、やりたいことが決まっているので無くしてしまってもいい行程を省いたインターフェースもありなんじゃないでしょうか。

エレベータの「閉じる」ボタンはない方が良いデザインではないか、という主張を聞いたことがあります。それと似ている気がしました。

ZEROFACESではコメントは認証制です。
コメントは投稿審査してから、エントリのページに反映されます。 少々お時間を頂きますが、どうかご了承ください。

トラックバック

トラックバックURL:

http://zerobase.jp/mt/mt-tb.cgi/50

KeynoteでUIデザイン

僕の英語勉強法