2021年10月24日(日)
前に投稿した「AsteriskからFAXを送る」を書いたときは、送信対象のPDFファイルをAsteriskの仕様に合う “tiff” に変換することができなかったために、手作業でPDFを全ページ「縦置き」に揃えて「tiff」変換して「送信フォルダ」に置く、という面倒なことにしていましたが、何とか解決してA4縦・横混合のPDFをそのまま「送信フォルダ」に置くと送信できるようになりました。
前回投稿:https://mrhiroshi2010.wordpress.com/2019/05/27/asterisk%e3%81%8b%e3%82%89fax%e3%82%92%e9%80%81%e3%82%8b/
Asteriskから送信できるtiffファイルのサイズは、1728 x 2339 x 1BPP 前後であることが求められます。
設置条件
①送信するPDFファイル名は「宛先FAX番号-外線トランク番号」ex.0312345678-901
②送信するPDFのサイズは A4縦、横どちらでも可
③送信するPDFの保存フォルダ サーバの共通フォルダ/sendpdf ex. /home/share/sendpdf
④送信済PDFの保存フォルダ サーバの共通フォルダ/sentpdf ex. /home/share/sentpdf
⑤変換したtiffの保存フォルダ サーバの共通フォルダ/send_files ex. /home/share/send_files
次のシェルスクリプトで、縦横ページ混合のPDFを全て縦置きに変換します。
予めインストールしておくパッケージは次の3つです。
# apt install imagemagick ghostscript pdftk
#!/bin/bash
# pdfファイルを縦置きにする
# /usr/local/bin/pdftate.sh
cd /home/share/sendpdf
#cd /home/share/sent_files
files="./*.pdf"
for filepath in ${files}
do
pdfname=`basename ${filepath}`
# pdfファイルの中身が縦か横かを調べて、全て縦にする。
convert xc:none -page A4 temp.pdf
convert xc:none -page A4 temp1.pdf
convert xc:none -page A4 temp2.pdf
identify -format "Page %s size: %W x %H\n" ${pdfname} | grep "Page.* size:" \
| while read Page _pageno size _width x _height rest; \
do \
[ "$(echo "${_width} / 1"|bc)" -gt "$(echo "${_height} / 1"|bc)" ] \
&& pdftk ${pdfname} cat $((_pageno + 1))right output temp1.pdf \
|| pdftk ${pdfname} cat $((_pageno + 1)) output temp1.pdf ; \
if [ ${_pageno} -gt 0 ] ; \
then pdftk temp2.pdf temp1.pdf cat output temp.pdf ; \
else pdftk temp1.pdf cat output temp.pdf ; \
fi ; \
cp temp.pdf temp2.pdf ; \
done
mv temp.pdf ${pdfname}
rm -f temp.pdf temp1.pdf temp2.pdf
done
exit 0
続いて、PDFをtiffに変換します。
#!/bin/bash
# /usr/local/bin/pdfsendfax.sh
cd /home/share/sendpdf
files="./*.pdf"
for filepath in ${files}
do
pdfname=`basename ${filepath}`
tifname=`echo ${pdfname} | sed "s/.pdf/.tif/"`
gs -q -dNOPAUSE -dBATCH -sDEVICE=tiffg3 -r209x200 -sOutputFile=${tifname} ${pdfname}
mv ${tifname} /home/share/send_files
STR=`date +%s`
STR=${STR%.*}
STR=`date -d '@'${STR} +"%Y%m%d-%H%M%S"`
STR0=`basename ${pdfname} .pdf`
STR0=${STR0%-*}
STR0=${STR0}'-'${STR}'.pdf'
touch -c ./${pdfname}
mv ./${pdfname} ../sentpdf/${STR0}
done
exit 0
これで、縦・横ページ混合のPDFをFAX送信可能な「縦 1728 x 2339 x 1BPP」のtiffに変換できるので、後は前回の記事の送信プログラムがCRON起動されるとFAXが送信されます。
送信結果がOKなのかNGなのか分かるように、extensions.confに追記しました。
次のコンテキストで、FAX送信結果を “SUCCESS” か “Error message” で送信済PDFと共にフォルダにアウトプットします。
; ファクス送信のためのコンテキスト
[send-fax]
exten => send,1,NoOp(**** SENDING FAX ****)
same => n,SendFAX(${FAXFILE},d)
same => n,Wait(6)
; same => n,Hangup()
; Hangup.
exten => h,1,NoOp(Hangup send-fax)
same => n,NoOp(${FAXSTATUS})
same => n,NoOp(${FAXERROR})
same => n,System(echo “${FAXSTATUS} ${FAXERROR}” >> /home/share/sentpdf/Result-${FAXFILE:23:26}.txt)
ピンバック: AsteriskからFAXを送る | ぱぴぃの、人生これから