CUPS印刷

2014-08-07 (木) 10:21:54

backendファイルを作成することでcupsを使ってps/pdfファイルを作成可能になる。

PSファイル出力

/usr/lib/cups/backend/ps

#!/bin/sh
#
# PSDIRは適宜変更してください。
PSDIR=/tmp
FILENAME=receipt.ps
if [ $# -eq 0 ]; then
echo "direct ps:/ \"Unknown\" \"PS Writing\""
exit 0
fi 
#
#psファイルに変換するとページを束ねることができる。
/usr/bin/pdftops $6 - >> $PSDIR/$FILENAME
chmod 666 $PSDIR/$FILENAME
exit 0

を作成して

# chmod 755 /usr/lib/cups/backend/ps
# rm /usr/lib/cups/backend/ps~
# /etc/init.d/cups restart

http://localhost:631でプリンタの追加

プリンタ名:ps
デバイス:PS Writing
メーカ名:Raw
モデル名:Raw Queue(en)

ORCAの設定

マスタ登録、出力先プリンタ割り当て情報のプリンタ名をpsにする。

ファイル出力先、ファイル名の変更は、PSDIR、FILENAMEを書き換える。

receipt.psが完成するまでかなりの時間がかかる。フォルダーの表示設定を一覧にしてサイズが確定するまで待つ。

$ ps2pdf receipt.ps

とするとreceipt.pdfができあがる。

PDFファイル

/usr/lib/cups/backend/pdf

#!/bin/sh
#
PRINTTIME=`date +%b%d-%H%M%S`
PDFDIR=/home/ormaster/data/orcaprint
#
if [ $# -eq 0 ]; then
echo "direct pdf:/ \"Unknown\" \"pdf Writing\""
exit 0
fi 
cat $6 > $PDFDIR/$PRINTTIME.pdf
chmod 666 $PDFDIR/$PRINTTIME.pdf
exit 0

を作成して

# chmod 755 /usr/lib/cups/backend/pdf
# rm /usr/lib/cups/backend/pdf~
# /etc/init.d/cups restart

http://localhost:631でプリンタの追加

プリンタ名:pdf
デバイス:pdf Writing
メーカ名:Raw
モデル名:Raw Queue(en)

ORCAの設定

マスタ登録、出力先プリンタ割り当て情報のプリンタ名をpdfにする。

ファイル出力先の変更は、PDFDIRを書き換える。

PDFファイル(レセプトファイル作成用)

pdftkを使うとpdfファイルを直接結合できる。
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/928splitpdf.html

# apt-get install pdftk

/usr/lib/cups/backend/pdf

#!/bin/sh
#
export LANG=C
sleep 1s
PDFDIR=/home/ormaster/data/orcaprint
if [ $# -eq 0 ]; then
echo "direct pdf:/ \"Unknown\" \"pdf Writing\""
exit 0
fi 
cat $6 > $PDFDIR/temp.pdf
pdftk $PDFDIR/*.pdf cat output $PDFDIR/out.pdf
mv $PDFDIR/out.pdf $PDFDIR/receipt.pdf
chmod 666 $PDFDIR/receipt.pdf
rm $PDFDIR/temp.pdf
exit 0

PDFファイル出力すると同時にプリンタで印刷する

/usr/lib/cups/backend/pdf

#!/bin/sh
#
PRINTTIME=`date +%b%d-%H%M%S`
PDFDIR=/home/ormaster/data/orcaprint
#
if [ $# -eq 0 ]; then
echo "direct pdf:/ \"Unknown\" \"pdf Writing\""
exit 0
fi 
cat $6 > $PDFDIR/$PRINTTIME.pdf
chmod 666 $PDFDIR/$PRINTTIME.pdf
lp -d LBP3920 $6
exit 0

lp -d LBP3920 $6でプリンタ出力、LBP3920はプリンタ名(例)。

PDFファイルを添付ファイルとしてメールすると同時にプリンタで印刷する

$ sudo apt-get install postfix mailutils

sasl認証が必要なので

$ sudo apt-get install sasl2-bin libsasl2-modules
$ sudo nano /etc/default/saslauthd

START=yes に変更してreboot

gmailアカウントを新規取得してpostfixのrelayhostとして利用する。(仮にhogehoge@gmail.com パスワードはabcdefghij)

まずはmailコマンドでメールを送ってみる。 $ sudo nano /etc/postfix/main.cf 編集

relayhost = 

relayhost = [smtp.gmail.com]:587

に変更する。

末尾に

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/isp_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = cram-md5, digest-md5, plain, login
smtp_use_tls = yes
smtp_tls_CApath = /etc/ssl/certs/Thawte_Premium_Server_CA.pem

を追記する。

$sudo nano /etc/postfix/isp_passwd 新規作成

[smtp.gmail.com]:587 hogehoge@gmail.com:abcdefghij

と記述して

sudo postmap /etc/postfix/isp_passwd

としてisp_passwd.dbを作成する。

$ sudo /etc/init.d/postfix restart

mailコマンドでメールを送信してみる。ルートで

# mail xxxx-xxx@yyyyyy.jp

自分の持っているメアドにメールしてみる。ctrl Dで送信。

root <hogehoge@gmail.com>

からのメールとして届く。
うまく行かない場合、

# mailq

としてみて送信されてないようなら

# postsuper -d ALL

として残骸を削除する。

gmailの設定のアカウントとインポートの名前の所で手持ちのメアドを追加すると

# mail xxxx-xxx@yyyyyy.jp -aFrom:手持ちのメアド

で手持ちのメアドからのメールとして届くようになる。

添付ファイルを送信するのにmailコマンドではなくuuenviewを使うと便利。

$ sudo apt-get install uudeview

でuuenviewがはいる。

/usr/lib/cups/backend/pdfmail

#!/bin/sh
#
PRINTTIME=`date +%b%d-%H%M%S`
if [ $# -eq 0 ]; then
echo "direct pdfmail:/ \"Unknown\" \"pdfmail Writing\""
exit 0
fi 
cat $6 |uuenview  -b -f '手持ちのメアド' -m 'xxxx-xxx@yyyyyy.jp' - $PRINTTIME.pdf
#
#
lp -d LBP3920 $6
#
exit 0

CUPS job-idリセット

http://ml.orca.med.or.jp/orca-users/msg12433.html