cschen33.tw@yahoo.com
¤é´Á:2006/02/22
³o¬OÀ³¥Îtn52500³nÅé¤ÎRedhat FC4¨Ó¹ê§@,¤£¨Ï¥ÎIBM personal communication(PC) ³nÅé
¨Ï¥ÎCUPS¦Lªí¨t²Î,§@§¹¤Fı±o¥i¥H§¹¥þ¨ú¥NPCªº¦Lªí¾÷Âà¦V¤u§@,¦ýµLªk¦C¦L¤¤¤å
ì²z:
linux (lp5250d)->as400 (²£¥ÍµêÀÀ¦Lªí¾÷)
as400(¦C¦L)->linux(lp5250d)->²£¥ÍpdfÀÉ
¦]¦¹«ÂI¦blinux¤Wªºlp5250dªº³]©w
¨Ï¥Î¨t²Î¤Î³nÅé
FC4
CUPS
tn5250
a2ps
ghostscript-ps2pdf
python
³]©wlp5250d
¥¦¥i¥H¦b©R¥O¦Cª½±µ¤U©R¥O,¤]¥i¥HŪ¨ú¨Ï¥ÎªÌ¥Ø¿ý¤U.tn5250rcªº³]©w
¨Ò:
lp5250d env.DEVNAME=testprint outputcommand="scs2ascii | lpr" 192.168.0.100
³s½u¨ì192.168.0.100²£¥ÍµêÀÀ¦Lªí¾÷testprint,·í¨Ï¥ÎªÌ¦C¦L®ÉÂà¦V¥»¾÷ªº¹w³]¦Cªí¾÷
¦P¤U¥ý½s¿è.tn5250rc¦bÓ¤Hªº¥Ø¿ý¤U
cd
vi .tn5250rc,¥[¤J¤U±¤º®e
mytest {
host=192.168.0.100
env.DEVNAME=testprint
outputcommand=scs2ascii | lpr
}
µM«á¦b©R¥O¦C¤U
lp525pd mytest
´N¥i¥H¤F
¤TÓ¦³¥Îªºµ{¦¡
scs2ascii
scs2ps
scs2pdf
³oÓ¤TÓµ{¦¡¥i¥H¥Î¦boutputcommand=
scs2ascii-±N¸ê®ÆÂର¤å¦rÀÉ
scs2ps-±N¸ê®ÆÂରpsÀÉ
scs2pdf-±N¸ê®ÆÂରpdfÀÉ
#outputcommand ·|±N¦Ûas400¨ú±oªº¦C¦L¸ê®Æ¬y(stream)Âà¨ì³oùةҨϥΪºµ{¦¡
#scs2pdf¤Îscs2ps¹ï©ó¼eªº³øªí·|²£¥Í¤@Ãä³Qµô±¼,¦]¦¹µLªkÀ³¥Î¤~¦³¥»¤å¥ó
lp5250d³]©w
outputcommand =scs2ascii | ¦Û¤vªºµ{¦¡
²{¦b©w¤F¤§«á«ÂI´N¬O¦Û¤vªºµ{¦¡
§Úªu¥Î¤§«e¨Ï¥Îpythonªºµ{¦¡
´ú¸Õ
¨Ï¥Îoutputcommand=scs2ascii > /tmp/abc.txt
¥Ñ400¦L¦C¨ìlinux«á,²£¥Í¤@Óabc.txtÀÉ®×
ª`·N:¦C¦Lªº¤å¥ó¦³¨âºØ,¤@ºØ¬O§t¦³^M,¥t¥~¤@ºØ¬O¤£§t^M,Y¤£§t^M«Ü²³æ(¨ú±o³Ì¼e¦æ¡A¦pªG¶W¹L¬YÓ¼e«×,°²³]85,¦ba2ps ¨Ï¥Î¾î¦V¦C¦L°Ñ¼Æ-r,¤p©ó85ª½¦V°Ñ¼Æ-R)
¥H¤U°Q½×§t¦³^M
¦blinux¤U
viÀ˵ø
¦h¤F^M ¤Î^L
hexdump abc.txt -C | more
¬d¨ì
^M = 0d
^L=0c
man ascii
¬d¨ì
0d-¦^¨ì¦æº
0a-´«¦æ(linux)
0d 0a -´«¦æ(dos)
0c-´«¶
#^M¬O±N¸Ó¦æ¤å¦r¤À¬°¨â¬q°²³]¸Ó¦æ¬° aaaaa^Mbbbbb, ¤å¦r¬°A¤ÎB¬q,B¦^¨ì¦æºª½±µÂмg¦bA¤W,^M¥i¯à¦³¦hÓ
#¦]¬°¦³10¶i¦ì¡B16¶i¦ì¡BASCIIªºªí¥Üªk,µLªk±oª¾¦bpythonµ{¦¡¤¤ªí¥Üªk¬°¦ó?
python ´ú¸Õ
python
>> tmpf=open("/tmp/abc.txt")
>>line=tmpf.readline()
##«½Æ°õ¦æ¼Æ¦¸¨ì§t¦³^M
>>sub_string=line.split("\r")
##±N¦r¦ê¤À³Î
¥H¤U¬Oµ{¦¡½X:
#!/usr/bin/python
import sys,tempfile,commands,time,string
from time import localtime,time,strftime
dir='/home/samba/ps2pdf/'
tempdir=dir+'temp/'
output_dir='outfile/'
tempn1=tempfile.mktemp('.tmp')
tempn2=tempfile.mktemp('.txt')
tempn3=tempfile.mktemp('.ps')
maxline=0
p_unix2dos=commands.getoutput('which unix2dos ')+" -o "
p_a2ps=commands.getoutput('which a2ps')+" "
p_ps2pdf=commands.getoutput('which ps2pdf14')+" "
#½Ð×§ïout_file¨ì§An¿é¥Xªº¦a¤è
out_file=dir+output_dir+strftime('%m%d-%H%M%S.pdf',localtime(time()))
def combine_string(subs1,subs2):
return_string=""
s_wide=max(len(subs1),len(subs2))
subs1=subs1.ljust(s_wide)
subs2=subs2.ljust(s_wide)
for i in xrange(0,s_wide):
if subs1[i]==" " and subs2[i]!=" " :
return_string=return_string+subs2[i]
else:
return_string=return_string+subs1[i]
return return_string+"\n"
pipefile=sys.stdin
tempf1=open(tempn1,'w+')
tempf1.write(pipefile.read())
tempf1.close()
tempf1=open(tempn1,'r')
line=tempf1.readline()
tempf2=open(tempn2,'w+')
while line:
sub_str=line.split("\r")
if len(sub_str)==1:
line=sub_str[0]
elif len(sub_str)==2:
s1=sub_str[0]
s2=sub_str[1]
s2=s2[1:]
s2=s2.replace("\n","")
line=combine_string(s1,s2)
else:
s1=sub_str[0]
s2=sub_str[1]
line=combine_string(s1,s2)
if len(line)>=maxline:
maxline=len(line)
tempf2.write(line)
line=tempf1.readline()
tempf1.close()
tempf2.close()
pipefile.close()
convert_prg1='/usr/bin/a2ps '
convert_prg2='/usr/bin/ps2pdf14 '
#page width
#if width >85 then we chang the print orientation from
if maxline>=85:
print_dir=' -r '
else:
print_dir=' -R '
convert_opt=' --no-header --borders=0 -M letter --columns=1 --rows=1 '+print_dir+'-l '+str(maxline)+' -o '
convert_string=p_a2ps+tempn2+convert_opt+tempn3
a=commands.getoutput(convert_string)
#Âà´«PDFÀÉ,¬°¤F°£¿ù§Ú¤À¦¨¨â¦æ,§A¥i¥H¨Ï¥Î|¦X¦¨¤@¦æ
a=commands.getoutput('/usr/bin/ps2pdf '+tempn3+" "+out_file)
a=commands.getoutput('/bin/chmod 444 '+out_file)
#¦C¦LPSÀɨì¦Lªí¾÷laser
#Yn¨Ï¥Î¤U³oÓ¥\¯à,±N«e¨â¦æmark°_¨Ó
#a=commands.getoutput('lpr -P laser '+tempn3)
a=commands.getoutput('unlink '+tempn1)
a=commands.getoutput('unlink '+tempn2)
a=commands.getoutput('unlink '+tempn3)
|
µ{¦¡ »¡©ú
Ū¨úscs2ascii©Ò¶Ç¨Óªºstream,±N¦æ¤¤¦³^M¦X¨Ö¦r¦ê,¨Ï¥Îa2psÂରpsÀÉ¡A¦A¨Ï¥Îps2pdf14±NÀÉ®×ÂରpdfÀÉ,a2ps¨Ï¥Î
ªº°Ñ¼Æ--no-header --borders=0 -M letter --columns=1 --rows=1
,ÁÙ¦³¤@Ó¬On®Ú¾Ú¨C¦æªº¦r¼Æ¬Ýnª½¦LÁÙ¬O¾î¦L,§Ú¬O¨Ï¥Î 85¬°¤À¬É,<85 -R ,>=85 -r
¦A³]©w.tn5250rc
°²³]¼g¦nªºµ{¦¡¬°/home/csc/txt2pdf
pdf {
host=192.168.0.100
env.DEVNAME=pdf
outputcommand=scs2ascii | /home/csc/txt2pdf
}
±Æµ{
§A¥i¥H¦b/etc/cron.d¤º½s¿è,©Î¬O¥Î¨ä¥¦¤u¨ã¨Ó³]©w,®É¶¡¦Û¤v©w
1.±Ò°Ê
lp5250d pdf
2.Ãö³¬
killall lp5250d -s KILL
¥Î©ó¶]¦hÓlp5250d
EPSON2080CÂà¦V´ú¸Õ
¥H¤U¥Ü½d¨âºØ¤è¦¡
1.smb -°²³]¥D¾÷¦WºÙ¬°test1,¤À¨É¦Lªí¾÷epson
2.lpd - °²³]ip=192.168.0.50,¤À¨É¦Lªí¾÷ epson
°õ¦æsetup -> printer configure ->·s¼W¦Lªí¾÷(dot,dot1)¿ï¥Îepson ÂI¯x°},¶ñ¤J¤Wz¸ê®Æ,ÅX°Êµ{¦¡¦b³]©w¸ÑªR«×180x180
dot{
host=192.168.0.100
env.DEVNAME = dot
env.IBMMFRTYPMDL = *EPLQ1170
outputcommand = lpr -P dot -oraw
}
dot1 {
host=192.168.0.100
env.DEVNAME = dot1
env.IBMMFRTYPMDL =*EPLQ1170
outputcommand = lpr -P dot1 -oraw
}
¨ä¤¤-oraw¤@©wn¤U§_«h¦b/var/log/cups/error_log,·|ĵ§i§AµLªk¦C¦Lstream
#©Î¬O ×§ï/etc/cups/¤¤
mime.convs-application/octet-stream
mime.types-application/octet-stream
ªº#¥h±¼,«h¥i¥H¤£¥Î-oraw
±NÂনªºpdfÀɪ½±µ¦C¦L
´ú¸Õ,§An¥ý³]©w¦n¦Lªí¾÷°²³]laser
lpr abc.pdf -P laser ¦pªG¦C¦L¥¿±`³]©w
.tn5250rc
laser {
host=192.168.0.100
env.DEVNAME=laser
env.IBMMFRTYPMDL=*HP4
outputcommand=scs2pdf | §AªºpdfÂàÀɵ{¦¡
}
§Aªºµ{¦¡¤¤¥i¥H¥[¤Jlpr ÀɮצWºÙ -P laser -oraw ,·í¨Ï¥ÎªÌ¦C¦L³oÓ¦Lªí¾÷®É·|³QÂনpdfÀÉ,µM«á¦A¦C¦L
§Úªºkyeroa mita fs1010,µLªk¨Ï¥Îhp4¬Û®eª½±µ¦C¦L
laser {
host=192.168.0.100
env.DEVNAME=laser
env.IBMMFRTYPMDL=*HP4
outputcommand=lpr -P laser -oraw
}
¦]¦¹¨Ï¥ÎÂରpsµM«á¦A¦C¦L,¨S¦³°ÝÃD,¥ô¦ó¸ê®Æ³£¥i¥H³Q§Úªºµ{¦¡Âରps¦A¦C¦L