def pipeMain(self): try: self.muPdf=MuPdf() curVersion=None curSource=None parser=argparse.ArgumentParser(description="PDF Pipe Renderer", epilog="(C) Copyright 2013 by RSJ Software GmbH Germering. All rights reserved. Licensed under AGPL V3", fromfile_prefix_chars="@") parser.add_argument("--angle", type=int, default=self.globalParms.angle, help="Rotation angle. Default: -90") parser.add_argument("--resolution", type=int, default=self.globalParms.resolution, help="Resolution in dpi. Default: 300") parser.add_argument("--printer", type=str, default=self.globalParms.printer, help="Printer name") parser.add_argument("--page", type=int, default=self.globalParms.page,help="Page number (1-based). Default: 1") parser.add_argument("--pdf", type=argparse.FileType(mode="rb"), help="PDF file") parser.add_argument("--exit", type=bool, default=False, help="Exit") parser.add_argument("--pngPrefix", type=str, default=self.globalParms.pngPrefix, help="PNG prefix") parser.add_argument("--prnPrefix", type=str, default=self.globalParms.prnPrefix, help="PRN prefix") parser.add_argument("--tmpPrefix", type=str, default=self.globalParms.tmpPrefix, help="Temp prefix") parser.add_argument("--pcxPrefix", type=str, default=self.globalParms.pcxPrefix, help="PCX prefix") parser.add_argument("--rllPrefix", type=str, default=self.globalParms.rllPrefix, help="RLL prefix") parser.add_argument("--version", type=str, default="", help="Pdf Version") parser.add_argument("--noauto", type=bool, default=False, help="No automatic advance to next page") parser.add_argument("--keep", type=bool, default=self.globalParms.keep, help="Keep PNG") parser.add_argument("--xdelta", type=int, default=self.globalParms.xdelta, help="xDelta in px") parser.add_argument("--ydelta", type=int, default=self.globalParms.ydelta, help="yDelta in px") parser.add_argument("--aalevel", type=int, default=self.globalParms.aalevel, help="Anti aliasing level") while True: reqString=sys.stdin.readline() self.req=parser.parse_args(shlex.split(reqString)) if self.req.exit: break if curVersion!=self.req.version: self.muPdf.close() self.muPdf.load(self.req.pdf.read()) count=self.muPdf.getPageCount() curVersion=self.req.version self.curPage=None if self.req.noauto or self.req.page!=self.curPage: if self.req.page <=count: self.curPage=self.req.page result=self.producePage() else: result="" sys.stdout.write(result+"\n") sys.stdout.flush() if not self.req.noauto: if self.req.page+1<=count: self.curPage=self.req.page+1 result=self.producePage() except EOFError: pass
def convert(parms): start=datetime.datetime.utcnow() muPdf=MuPdf() muPdf.open(parms.inPdf) count=muPdf.getPageCount() for i in range(1, count+1): muPdf.loadPage(i) pngName="%s%d.png" %(parms.outPng,i) muPdf.render(pngName,angle=parms.angle, resolution=parms.resolution, xDelta=parms.xdelta, yDelta=parms.ydelta, aaLevel=parms.aalevel,maxWidth=parms.maxWidth, maxHeight=parms.maxHeight, colorSpace=parms.colorSpace) if parms.pcxPrefix: im=Image.open(pngName) pcxName="%s%d.pcx" %(parms.pcxPrefix,i) print pcxName im.save(pcxName) if parms.rllPrefix: rllName="%s%d.rll" %(parms.rllPrefix,i) print rllName RllConvert(pngName, rllName) if parms.prnPrefix: prnName="%s%d.prn"%(parms.prnPrefix, i) if parms.printer: printToFile(pngName, parms.printer, prnName,) muPdf.freePage() muPdf.close() muPdf.freeContext() end=datetime.datetime.utcnow() print end-start
class PipeProducer(object): def __init__(self, globalParms): self.globalParms=globalParms def getTmpName(self, prefix, suffix): if prefix==None or prefix.startswith("*") or prefix=="": f=tempfile.NamedTemporaryFile(delete=False,prefix=self.req.tmpPrefix, suffix="."+suffix, dir=os.getcwd()) ret=f.name f.close() else: ret="%s%d%s"%(prefix, self.curPage, suffix) return ret def producePage(self): self.muPdf.loadPage(self.curPage) pngName=self.getTmpName(self.req.pngPrefix, "png") self.muPdf.render(pngName, angle=self.req.angle, resolution=self.req.resolution, xDelta=self.req.xdelta, yDelta=self.req.ydelta, aaLevel=self.req.aalevel) self.muPdf.freePage() if self.req.pcxPrefix: pcxName=self.getTmpName(self.req.pcxPrefix, "pcx") im=Image.open(pngName) im.save(pcxName) if not self.req.keep: os.unlink(pngName) return pcxName if self.req.rllPrefix: rllName=self.getTmpName(self.req.rllPrefix, "rll") RllConvert(pngName, rllName) if not self.req.keep: os.unlink(pngName) return rllName if self.req.printer: prnName=self.getTmpName(self.req.prnPrefix, "prn") if printToFile(pngName, self.req.printer, prnName): if not self.req.keep: os.unlink(pngName) return prnName else: return "" return pngName def pipeMain(self): try: self.muPdf=MuPdf() curVersion=None curSource=None parser=argparse.ArgumentParser(description="PDF Pipe Renderer", epilog="(C) Copyright 2013 by RSJ Software GmbH Germering. All rights reserved. Licensed under AGPL V3", fromfile_prefix_chars="@") parser.add_argument("--angle", type=int, default=self.globalParms.angle, help="Rotation angle. Default: -90") parser.add_argument("--resolution", type=int, default=self.globalParms.resolution, help="Resolution in dpi. Default: 300") parser.add_argument("--printer", type=str, default=self.globalParms.printer, help="Printer name") parser.add_argument("--page", type=int, default=self.globalParms.page,help="Page number (1-based). Default: 1") parser.add_argument("--pdf", type=argparse.FileType(mode="rb"), help="PDF file") parser.add_argument("--exit", type=bool, default=False, help="Exit") parser.add_argument("--pngPrefix", type=str, default=self.globalParms.pngPrefix, help="PNG prefix") parser.add_argument("--prnPrefix", type=str, default=self.globalParms.prnPrefix, help="PRN prefix") parser.add_argument("--tmpPrefix", type=str, default=self.globalParms.tmpPrefix, help="Temp prefix") parser.add_argument("--pcxPrefix", type=str, default=self.globalParms.pcxPrefix, help="PCX prefix") parser.add_argument("--rllPrefix", type=str, default=self.globalParms.rllPrefix, help="RLL prefix") parser.add_argument("--version", type=str, default="", help="Pdf Version") parser.add_argument("--noauto", type=bool, default=False, help="No automatic advance to next page") parser.add_argument("--keep", type=bool, default=self.globalParms.keep, help="Keep PNG") parser.add_argument("--xdelta", type=int, default=self.globalParms.xdelta, help="xDelta in px") parser.add_argument("--ydelta", type=int, default=self.globalParms.ydelta, help="yDelta in px") parser.add_argument("--aalevel", type=int, default=self.globalParms.aalevel, help="Anti aliasing level") while True: reqString=sys.stdin.readline() self.req=parser.parse_args(shlex.split(reqString)) if self.req.exit: break if curVersion!=self.req.version: self.muPdf.close() self.muPdf.load(self.req.pdf.read()) count=self.muPdf.getPageCount() curVersion=self.req.version self.curPage=None if self.req.noauto or self.req.page!=self.curPage: if self.req.page <=count: self.curPage=self.req.page result=self.producePage() else: result="" sys.stdout.write(result+"\n") sys.stdout.flush() if not self.req.noauto: if self.req.page+1<=count: self.curPage=self.req.page+1 result=self.producePage() except EOFError: pass