[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:13178] PM-670C で印刷する方法
こんにちは。島田です。
いろいろ調べてやっとできました。
Debian 2.0 で、ネットワークにつながった Windows 98 マシンの PM-670C に
印刷する方法です。
日本語のテキスト・ファイルの印刷に成功しました。画像やグラフ入りの
PostScript ファイルの印刷についてはまだ実験していません。
試行錯誤で、あちこちのサイトをみながら試行錯誤したので、設定など詰めが
甘いかもしれません。
おかしな点がありましたら、ご指摘いただけましたら幸いです。
使ったソフトは次の通りです。
a2ps.pl-1.43-pre1 : Kazumasa Utashiro さんによる拡張のもの
smbprint : Hamm の samba(smbfs?)に付属のもの
gs-ja : Hamm のもの
ドライバは stcolor を使いました。mjc720 とか epag とかではまりましたが、
stcolor でないとだめでした。
各種ファイルの記述は文末の通りです。
printcap の /dev/pm-670c というのは、あらかじめ作っておいたデバイス・ファ
イルです。/dev/null でもいいらしいんですが、gs は排他的にこれをオープンす
るから、/dev/null にしない方が安全らしいです。
作り方はたしか mknod --mode=666 /dev/pm-670c としたと思います。
a2ps は、Hamm に付属のものではありません。前述ファイル名で archie すれ
ば見つかると思います。私は
ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/ から get しました。
a2ps.pl-1.43-pre1 を /usr/local/bin にコピーし、これに a2ps の名でシンボ
リック・リンクしておきました。
日本語テキスト・ファイル(もちろん ASCII も)の印刷の仕方の例は、
a2ps -p japanese.txt | lpr
などです。私の場合、Debian 2.0 マシンにプリンタは接続していないので、lp
がネットワーク経由のプリンタ PM-670C にしてあるからです。
詳しくは a2ps -help でみてください。
-----
/etc/printcap
lp|EPSON PM-670C remote printer at vision
:lp=/dev/pm-670c
:sd=/var/spool/lpd/lp
:af=/var/spool/lpd/lp/lp-acct
:lf=/var/spool/lpd/lp/lp-errs
:if=/usr/local/sbin/gsf
:pl#66
:pw#80
:pc#150
:mx#0
:sh
-----
/usr/local/sbin/gsf
#!/bin/sh
/usr/bin/gs -q -dSAFER -dNOPAUSE -sPAPERSIZE=a4 -sDEVICE=stcolor \
-r360x360 -dMicroweave -dUnidirectional -sOutputFile=- - \
| /usr/local/sbin/smbprint
exit $?
-----
/usr/local/sbin/smbprint
#!/bin/sh -x
# This script is an input filter for printcap printing on a unix machine. It
# uses the smbclient program to print the file to the specified smb-based
# server and service.
# For example you could have a printcap entry like this
#
# smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
#
# which would create a unix printer called "smb" that will print via this
# script. You will need to create the spool directory /usr/spool/smb with
# appropriate permissions and ownerships for your system.
# Set these to the server and service you wish to print to
# In this example I have a WfWg PC called "lapland" that has a printer
# exported called "printer" with no password.
#
# Script further altered by hamiltom@xxxxxxxxxx (Michael Hamilton)
# so that the server, service, and password can be read from
# a /usr/var/spool/lpd/PRINTNAME/.config file.
#
# In order for this to work the /etc/printcap entry must include an
# accounting file (af=...):
#
# cdcolour:\
# :cm=CD IBM Colorjet on 6th:\
# :sd=/var/spool/lpd/cdcolour:\
# :af=/var/spool/lpd/cdcolour/acct:\
# :if=/usr/local/etc/smbprint:\
# :mx=0:\
# :lp=/dev/null:
#
# The /usr/var/spool/lpd/PRINTNAME/.config file should contain:
# server=PC_SERVER
# service=PR_SHARENAME
# password="password"
#
# E.g.
# server=PAULS_PC
# service=CJET_371
# password=""
#
# Debugging log file, change to /dev/null if you like.
#
logfile=/tmp/smb-print.log
# logfile=/dev/null
#
# The last parameter to the filter is the accounting file name.
# Extract the directory name from the file name.
# Concat this with /.config to get the config file.
#
eval acct_file=\${$#}
spool_dir=`dirname $acct_file`
config_file=$spool_dir/.config
# Should read the following variables set in the config file:
# server
# service
# password
eval `cat $config_file`
#
# Some debugging help, change the >> to > if you want to same space.
#
echo "server $server, service $service" >> $logfile
(
# NOTE You may wish to add the line `echo translate' if you want automatic
# CR/LF translation when printing.
# echo translate
echo "print -"
cat
) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $server -N -P >> $logfile
-----
/usr/local/sbin/.config
server=vision
service=pm-670c
password="Naisho"
user=shimaden
----------------------------------------------------------------------
Mail: shimaden@xxxxxxxxxxx
Home Page: http://www.annie.ne.jp/~shimaden/
島田博幸
Hiroyuki Shimada
----------------------------------------------------------------------