def get_text(self, client, node, replaceEnt): # First see if the image file exists, or else, # use image-missing.png imgname = os.path.join(client.basedir, str(node.get("uri"))) try: w, h, kind = MyImage.size_for_node(node, client=client) except ValueError: # Broken image, return arbitrary stuff imgname = missing w, h, kind = 100, 100, 'direct' alignment = node.get('align', 'CENTER').lower() if alignment in ('top', 'middle', 'bottom'): align = 'valign="%s"' % alignment else: align = '' # TODO: inline images don't support SVG, vectors and PDF, # which may be surprising. So, work on converting them # previous to passing to reportlab. # Try to rasterize using the backend w, h, kind = MyImage.size_for_node(node, client=client) uri = MyImage.raster(imgname, client) return '<img src="%s" width="%f" height="%f" %s/>' % \ (uri, w, h, align)
def get_text(self, client, node, replaceEnt): # First see if the image file exists, or else, # use image-missing.png imgname = os.path.join(client.basedir, str(node.get("uri"))) try: w, h, kind = MyImage.size_for_node(node, client=client) except ValueError: # Broken image, return arbitrary stuff imgname = missing w, h, kind = 100, 100, 'direct' alignment = node.get('align', 'CENTER').lower() if alignment in ('top', 'middle', 'bottom'): align = 'valign="%s"' % alignment else: align = '' # TODO: inline images don't support SVG, vectors and PDF, # which may be surprising. So, work on converting them # previous to passing to reportlab. # Try to rasterize using the backend w, h, kind = MyImage.size_for_node(node, client=client) uri = MyImage.raster(imgname, client) return '<img src="%s" width="%f" height="%f" %s/>' % \ (uri, w, h, align)
def gather_elements(self, client, node, style): # FIXME: handle alt target = None if isinstance(node.parent, docutils.nodes.reference): target = node.parent.get('refuri', None) st_name = 'image' if node.get('classes'): st_name = node.get('classes')[0] style = client.styles[st_name] uri = str(node.get("uri")) if uri.split("://")[0].lower() not in ('http', 'ftp', 'https'): imgname = os.path.join(client.basedir, uri) else: imgname = uri try: w, h, kind = MyImage.size_for_node(node, client=client) except ValueError: # Broken image, return arbitrary stuff imgname = missing w, h, kind = 100, 100, 'direct' node.elements = [ MyImage(filename=imgname, height=h, width=w, kind=kind, client=client, target=target) ] alignment = node.get('align', '').upper() if not alignment: # There is no JUSTIFY for flowables, of course, so 4:LEFT alignment = { 0: 'LEFT', 1: 'CENTER', 2: 'RIGHT', 4: 'LEFT' }[style.alignment] if not alignment: alignment = 'CENTER' node.elements[0].image.hAlign = alignment node.elements[0].spaceBefore = style.spaceBefore node.elements[0].spaceAfter = style.spaceAfter # Image flowables don't support valign (makes no sense for them?) # elif alignment in ('TOP','MIDDLE','BOTTOM'): # i.vAlign = alignment return node.elements
def gather_elements(self, client, node, style): # FIXME: handle alt target = None if isinstance(node.parent, docutils.nodes.reference): target = node.parent.get('refuri', None) st_name = 'image' if node.get('classes'): st_name = node.get('classes')[0] style = client.styles[st_name] uri = str(node.get("uri")) if uri.split("://")[0].lower() not in ('http', 'ftp', 'https'): imgname = os.path.join(client.basedir, uri) else: imgname = uri try: w, h, kind = MyImage.size_for_node(node, client=client) except ValueError: # Broken image, return arbitrary stuff imgname = missing w, h, kind = 100, 100, 'direct' node.elements = [ MyImage(filename=imgname, height=h, width=w, kind=kind, client=client, target=target)] alignment = node.get('align', '').upper() if not alignment: # There is no JUSTIFY for flowables, of course, so 4:LEFT alignment = { 0: 'LEFT', 1: 'CENTER', 2: 'RIGHT', 4:'LEFT' }[style.alignment] if not alignment: alignment = 'CENTER' node.elements[0].image.hAlign = alignment node.elements[0].spaceBefore = style.spaceBefore node.elements[0].spaceAfter = style.spaceAfter # Image flowables don't support valign (makes no sense for them?) # elif alignment in ('TOP','MIDDLE','BOTTOM'): # i.vAlign = alignment return node.elements