2017-04-20 3 views
0

reportlab을 실험하고 두 이미지의 공간을 지정하고 위치를 지정하려고합니다. 이미지는 도장으로되어 있으며 코드를 실행하면 pdf에 두 이미지가 서로 겹쳐서 표시됩니다. 그것들을 배치 할 수 있고 x 축과 y 축의 좌표로 위치시킬 수는 있지만 그렇게 할 방법을 찾을 수는 없습니다. 여기에이 웹 사이트 링크의 원본 코드가 있습니다. 복사하는 것이 더 쉽습니다. http://matthiaseisen.com/pp/patterns/p0150/ 아무도 도와 줄 수 있습니까? 감사.reportlab에서 여러 이미지의 위치를 ​​지정하고 간격을 띄우는 방법

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 
          ) 

에서 가져 오기 스페이서 기능은 모든 이미지 inbetween, 스페이서 (폭 = 1, 높이 = 20)과 같은 일을 할, 당신은 이미지 해당 증속 공간을 얻어야한다. 희망은 그 누구에게나 도움이됩니다.

관련 문제