2017-04-20 345 views
0

我正在试验reportlab,并试图放置和放置两个图像。这些图像具有密封性,当我运行代码时,pdf将两个图像直接堆叠在一起。我希望能够将它们放在一起,并将它们放在x轴和y轴的坐标位置,但我找不到任何方法。 我从这里获得了这个网站的原始代码链接,这可能更容易复制。 http://matthiaseisen.com/pp/patterns/p0150/ 任何人都可以帮忙吗?谢谢。如何在reportlab中放置和放置多个图像Python

from reportlab.platypus import (
       BaseDocTemplate, 
       PageTemplate, 
       Frame, 
       Paragraph, 
       ParagraphAndImage, 
       Image 
           ) 
from reportlab.lib.styles import ParagraphStyle 
from reportlab.lib.enums import TA_LEFT, TA_CENTER 
from reportlab.lib.units import inch 
from reportlab.lib.colors import (
         black, 
         purple, 
          white, 
          yellow 
           ) 

def stylesheet(): 
          styles= { 
         'default': ParagraphStyle(
         'default', 
         fontName='Times-Roman', 
         fontSize=10, 
         leading=12, 
         leftIndent=0, 
         rightIndent=0, 
         firstLineIndent=0, 
         alignment=TA_LEFT, 
         spaceBefore=0, 
         spaceAfter=0, 
         bulletFontName='Times-Roman', 
         bulletFontSize=10, 
         bulletIndent=0, 
         textColor= black, 
         backColor=None, 
         wordWrap=None, 
         borderWidth= 0, 
         borderPadding= 0, 
         borderColor= None, 
         borderRadius= None, 
         allowWidows= 1, 
         allowOrphans= 0, 
         textTransform=None, # 'uppercase' | 'lowercase' |     None 
     endDots=None,   
     splitLongWords=1, 
       ), 
       } 
     styles['title'] = ParagraphStyle(
      'title', 
      parent=styles['default'], 
      fontName='Helvetica-Bold', 
      fontSize=24, 
      leading=42, 
      alignment=TA_CENTER, 
      textColor=purple, 
      ) 
     styles['alert'] = ParagraphStyle(
       'alert', 
     parent=styles['default'], 
     leading=14, 
     backColor=yellow, 
     borderColor=black, 
     borderWidth=1, 
     borderPadding=5, 
     borderRadius=2, 
     spaceBefore=10, 
     spaceAfter=10, 
    ) 
    return styles 


def build_flowables(stylesheet): 

    im = Image("seal.png", 3*inch, 3*inch) 
      return [ 
    Paragraph("I'm a title!", stylesheet['title']), 
    Paragraph('some text. ' * 30, stylesheet['default']), 
    Paragraph('This is important!', stylesheet['alert']), 
    Paragraph('. ' * 20, stylesheet["default"]), 
    im, 
    Paragraph('. ' * 40, stylesheet['default']), 
    Paragraph('. ' * 40, stylesheet["default"]), 
    im ] 




def build_pdf(filename, flowables): 
    doc = BaseDocTemplate(filename) 
    doc.addPageTemplates(
    [ 
     PageTemplate(
      frames=[ 
       Frame(
        doc.leftMargin, 
        doc.bottomMargin, 
        doc.width, 
        doc.height, 
        id=None 
       ), 
      ] 
     ), 
     ] 
    ) 
    doc.build(flowables) 

build_pdf('Project/Report/lab5.pdf', build_flowables(stylesheet())) 

回答

0

我找到了解决方案。从鸭嘴兽

 from reportlab.platypus import (
      BaseDocTemplate, 
      PageTemplate, 
      Frame, 
      Paragraph, 
      ParagraphAndImage, 
      Image, 
      Spacer 
          ) 

然后导入隔垫功能其间的任何图像,做一些类似的间距(宽度= 1,高度= 20),你应该得到其间的图像的空间。希望帮助其他人,欢呼。