3月 042012
webブラウザでファイルをアップロードしたり、URLをHTTP-POSTしたら印刷できる奴を作った。研究室のwebサーバーに設置したらわりとウケてた。
出力デバイスとしてプリンタがより手軽に使えるようになる。
例えばメッセージをプリンターから出したりとか、Ethernetにつながったハードウェアから印刷したりとか、いろいろなARマーカーをどんどん吐き出すとかできるのできっと便利。
SinatraからMac/Linuxのlprコマンドを呼び出して印刷する感じの実装をした。
URLをpostされたら、content_typeをチェックしてから、html以外ならダウンロードして印刷、htmlの場合はxvfbとwebkitを起動してキャプチャしてPDFを作って印刷するとかがんばった実装をした。
https://github.com/shokai/print-server
■セットアップ
Sinatraなのでローカルですぐ起動させられる。
git clone git@github.com:shokai/print-server.gitconfig.yamlにデフォルトプリンタの指定などが書いてある。
cd print-server
brew install qt imagemagick
gem install bundler
bundle install
cp sample.config.yaml config.yaml
Linuxの人はREADME.mdを見ろ。
■起動
ruby development.rbhttp://localhost:8080で起動する
■印刷
HTTP POSTで印刷できる
curl -d 'url=http://shokai.org/blog/' http://localhost:8080/url
multipart/form-dataでデータ入稿もできる。
■その他memo
このへんの事をするツールをhelperディレクトリにまとめてある
lprとlpstatで印刷している
ターミナルから印刷する – 橋本詳解
xvfbとwebkit起動してスクリーンショットを撮る
capybara-webkitでwebページのスクリーンショットを撮る – 橋本詳解
ImageMagickをmini_magickから使って、縦長のスクリーンショットを分割した
mini_magickとImageMagickで画像を切り取る – 橋本詳解
Prawnで画像を1つのPDFにまとめる
画像をpdfファイルにまとめる – 橋本詳解