Beispiel #1
0
	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
Beispiel #2
0
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
Beispiel #3
0
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