メールで受信したPDFファイルをHylaFaxで送信する。その2

Clipboard02

昨日書いた記事のアップデート版が早速出来たので更新。※最終版はこちら

昨日の記事を書いた後にクリーンな状態でのSDカードのバックアップを忘れていた事に気づいたのでメールFAX実装前の状態から再度構築しなおしてバックアップを取ることに。

RasPBX関連は実用第一なのでログ等がごちゃごちゃになった状態でのバックアップは避けたいので毎回ひと通りの構築手順がわかったら一段階前のバックアップから再構築して構築直後の状態でDDでバックアップを取るようにしています。

と、言うわけで再構築ついでにまたいくつか試して使い勝手を良くしてみました!

 

前回との違いは。

●複数のPDFファイルが送られてきた時にpdftkでファイルの結合処理を追加

●PSへの変換処理をpdf2psからpdftopsに変更

の2点です。

 

fetchmailの設定は前回のままでOK。

新しく必要なパッケージを入れます。

apt-get install poppler-utils pdftk nkf

メール受信時に処理するシェルスクリプトを変更

#カレントディレクトリ移動(場所はお好みで指定)

cd `dirname $0`

 

#受信メールをtemp.mailに保存

cat > temp.mail

 

#tempに移動

cd temp

 

#nkfでメールの日本語をデコードしつつmunpackで添付ファイルを取り出し。

nkf -m ../temp.mail | munpack > log.txt

 

#munpackの実行ログからPDFファイルの名前一覧を取得

sed -i -ne ‘/(application\/pdf)/p’ log.txt

sed -i -e ‘s/ (application\/pdf)//g’ log.txt

 

#pdftkで一覧のファイルを結合

pdftk `cat log.txt` cat output ../faxdata.pdf

 

#pdftopsでPSファイルに変換

pdftops ../faxdata.pdf ../faxdata.ps

 

#メールのタイトルに記載された番号にファックスを送信

sendfax -f 結果送信先メールアドレス -n -d `grep “Subject:” ../temp.mail | cut -c10-` ../faxdata.ps

 

#いらないファイルを削除

rm temp.mail faxdata.pdf faxdata.ps

rm temp/*

こんな感じ。

相変わらずシェルスクリプトの知識が乏しいので一度ファイルに出力してから再入力のメンドクサイ処理してますw

本当は一時ファイルもっと減らしていっきに処理出来ると思うんだけどw

 

pdftkとpdftopsは前回の雑な処理だとファイル名でエラーを返してきたのでちゃんとnkfでデコードして処理。

pdf2psと違いpdftopsだとある程度の日本語フォントを処理がGSに頼らずに出来るみたいなので写真以外のPDFファイルも利用可能に!

pdftkの追加により複数のPDFファイルを送っても結合後に送信するのでスマホからでもFAX送付状等を追加して送ることも可能!

 

前回よりはなかなか便利になったけれど…

pdftkとpdftopsの処理が重いのでFAX処理中はRaspberry PiのCPU使用率が100%に張り付きます。

頻繁に使うようならRaspberry Pi2に乗り換えが必要かな~

 

あと、添付ファイルが添付されてない時のIF処理を追加したほうが更にいいかも。

気が向いたら更新するかも???