def pdf_to_image(self, pdf_file): if not self.check_file_exist(pdf_file): self.log.debug('Requested file not found in {} '.format(pdf_file)) return False image_file = pdf_file.replace('.pdf', '.jpg') try: pdf_to_img = Image() pdf_to_img.density('200') pdf_to_img.read(pdf_file) pdf_to_img.write(image_file) self.log.info('Image convert passed - {} '.format(image_file)) return True except Exception: self.log.error('Image convert failed - {} '.format(image_file)) self.log.error('', exc_info=True) return False
def to_jpgs(self, size='mid', pages=None): """ Convert pdf to jpeg images pages: array for pages, None for extract all """ dendic = dict(thumb=40, mid=100, big=150) density = dendic[size] pages = np.arange(0, self.pages, 1) if pages is None else pages if len(pages) < 1: return sp = self.slides_path(size) if os.path.exists(sp): shutil.rmtree(sp) os.makedirs(sp) img = Image() img.density("{}".format(density)) for page in pages: if page > self.pages or page < 0: continue pdf = "{}[{}]".format(self.pdf_path, page) slid = "{}/{:03d}".format(sp, page) img.read(pdf) img.write("{}.jpg".format(slid))
def buildNodeImage(self,node): self.buildCounterNode+=1 node['name'] = node['name'].encode("utf-8") print "{0:.2f}".format(self.buildCounterNode / (self.buildCounterNodeTotal) * 100)," percent complete of this batch \r", scale = self.scaleFactor #if node['size'] > 10: #cale = 4.75 #if node['size'] < 900: # scale = 4 circleHeight = int(float(node['size'])*scale) circleWidth = int(float(node['size'])*scale) canvasHeight = int(circleHeight *2) canvasWidth = int(circleWidth* 2) im = Image(Geometry(10,10), 'transparent') fontsize = self.returnFontSize(canvasHeight) im.fontPointsize(fontsize) tm = TypeMetric() im.fontTypeMetrics(node['name'], tm) if tm.textWidth() > canvasWidth: canvasWidth = int(tm.textWidth()) + 5 im = Image(Geometry(canvasWidth,canvasHeight), 'transparent') im.density("72x72") im.magick('RGB') im.resolutionUnits(ResolutionType.PixelsPerInchResolution) im.strokeAntiAlias(True) color = (node['rgb'][0],node['rgb'][1],node['rgb'][2]) color = self.rgb_to_hex( color ) im.fillColor(color); im.strokeWidth(2); if circleWidth <= 20: im.strokeColor("transparent"); else: im.strokeColor("black"); if circleWidth <= 50: im.strokeWidth(1); circle = DrawableCircle( canvasWidth/2 , canvasHeight/2, (canvasWidth/2) + (circleWidth/2), (canvasHeight/2) + (circleHeight/2)) im.draw(circle) im.fillColor("white"); im.strokeColor("black"); im.strokeWidth(1); fontsize = self.returnFontSize(canvasHeight) im.fontPointsize(fontsize) tm = TypeMetric() im.fontTypeMetrics(node['name'], tm) textWidth = tm.textWidth() textHeight = tm.textHeight() if fontsize <= 30: im.strokeColor("transparent") text = DrawableText((canvasWidth / 2) - (textWidth/2), canvasHeight/2 + 6 , node['name']) im.draw(text) im.write(self.dataCircles + str(node['id']) + '.png')