Benutzer:Jürgen/Firma/probi2ps

Aus rü5
Wechseln zu:Navigation, Suche
#!/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)