#!/usr/bin/python import sys, os, tempfile, re backfiledir = "/home/daten/vorlagen/drucker/" klein = "Courier@8" gross = "Courier@10" fett = "Courier-Bold@10" page = "\x00font{%s}\n\n\n\n\n\n\n" % gross delspace = 2 ############################################################################################ # Definitionen Druckertreiber # argc = len(sys.argv) if argc == 1: print "ERROR: probi2ps job-id user title copies options [file]" sys.exit(0) sys.stderr.write("INFO: probi2ps %s \n" % sys.argv) if argc < 6 or argc > 7: sys.stderr.write("ERROR: %s job-id user title copies options [file]\n" % sys.argv[0]) sys.exit(1) for opt in sys.argv[5].split(" "): if (opt.split("=")[0] == "back") : page = "\x00epsf[nc]{" + backfiledir + opt.split("=")[1] + "}" + page sys.stderr.write("INFO: backgroud file is %s%s\n" % (backfiledir,opt.split("=")[1])) if argc == 7: sys.stderr.write("INFO: file is %s \n" % sys.argv[6]) infile = open(sys.argv[6],"r") else: sys.stderr.write("INFO: file is stdin\n") infile = sys.stdin ########################################################################################### # Erzeuge Temp-datei # filename = tempfile.mktemp(".probi2ps") try: tmpfile = open(filename, "w") except: sys.stderr.write("ERROR: unable to create tmpfile %s\n" % filename) sys.exit(1) sys.stderr.write("INFO: tmpfile is %s\n" % filename) ############################################################################################# # Konvertiere Epson-Format in Enscript-Format # und schreibe in Temp-Datei # data = infile.read() data = re.sub( "\n(\033.\033.)\ {%i}" % delspace ,"\n\\1", data ) # spaces mit sonderzeichen weg data = re.sub( "\n\ {%i}" % delspace ,r"\n", data ) # spaces am anfang jeder zeile weg data = re.sub( "\x1bx0",page, data) # Intro data = re.sub( "\r\n" ,"\n", data) # Zeilenvorschub data = re.sub( "\x1b\x0f" ,"", data) # Zeilenvorschub ? data = re.sub( "\x1bP" ,"\x00font{%s}" % klein , data) # Schrift 10 data = re.sub( "\x1bM" ,"\x00font{%s}" % gross , data) # Schrift 12 data = re.sub( "\x1b4","", data) # Kursiv an data = re.sub( "\x1b5","", data) # Kursiv aus data = re.sub( "\x1bE","\x00font{%s}" % fett , data) # Fett an data = re.sub( "\x1bF","\x00font{%s}" % gross, data) # Fett aus data = re.sub( "^ ","", data) # Leerzeichen weg tmpfile.write(data) tmpfile.close() ############################################################################################# # Ausgabe # (sin,sout,serr) = os.popen3("/usr/bin/enscript -e -X ibmpc -B -p - --margins=0:0:0:0 %s" % filename) sin.close() sys.stdout.write(sout.read()) for line in serr.readlines(): sys.stderr.write("ERROR: Enscript stderr : %s" % line) sout.close() serr.close() ############################################################################################# os.unlink(filename) sys.stderr.write("INFO: Ready to print ...\n") sys.exit(0)