在这里尝试居中一张图片。现在,我能够将图片相对于x轴居中,但我无法将实际图片居中在该点上。相反,它会从页面的中心开始显示图片。
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.pagesizes import letter
from reportlab.lib.units import inch
from reportlab.lib.units import mm
from reportlab.platypus import Image
from reportlab.lib.enums import TA_JUSTIFY
from reportlab.lib.utils import ImageReader
from reportlab.pdfgen import canvas
Width, Height = letter
styles = getSampleStyleSheet()
Title = "Comparison Index"
pageinfo = "platypus example"
BTRLogo = 'BTALogo.png'
PartnerLogo = 'PartnerLogo.png'
ClientLogo = 'ClientLogo.png'
Graph1 = 'PlanOffered.jpg'
# Define the fixed features of the first page of the document
def myFirstPage(canvas, doc):
canvas.saveState()
canvas.setFillColorCMYK(0.68, 0.44, 0, 0.41)
canvas.setFontSize(22)
canvas.setFont('Helvetica-Bold', 36)
canvas.drawString(40, 670, 'Health & Welfare')
canvas.setFont('Helvetica-Bold', 24)
canvas.drawString(40, 625, 'Benchmark Comparison Report')
canvas.setFont('Helvetica', 16)
canvas.drawString(40, 550, 'Prepared for:')
canvas.drawString(40, 400, 'Prepared on:') #INSERY DYNAMIC DATE****
canvas.drawImage(BTRLogo,480,18,width=100,height=66.62,mask='auto')
#Logo is measured and good to go
canvas.drawImage(PartnerLogo, 10, Height/5, width=Width/1.2,
preserveAspectRatio=True, mask='auto') #MAKE SURE IMAGE IS DYNAMIC AND HAS MAX SETS
canvas.setStrokeColorCMYK(0.68,0.44,0,0.41)
canvas.setLineWidth(7)
canvas.line(40,112,570,112)
# Since we want pages after the first to look different from the first we define an alternate layout for
# the fixed features of the other pages.
# Note that the two functions use the pdfgen level canvas operations to paint the annotations for the pages.
def myLaterPages(canvas, doc):
canvas.saveState()
canvas.setFont('Times-Roman', 23)
page_num = canvas.getPageNumber()
text = "Page #%s" % page_num
canvas.drawRightString(200 * mm, 20 * mm, text)
canvas.restoreState()
def myThirdPages(canvas, doc):
canvas.saveState()
canvas.setFont('Times-Roman', 9)
canvas.drawString(inch, 0.75 * inch, "Page %d %s")
canvas.restoreState()
# Create a story and build the document
def createMultiPage():
doc = SimpleDocTemplate("Comparison Index.pdf", pagesize=letter, rightMargin=72, leftMargin=72, topMargin=72, bottomMargin=18)
style = styles["Normal"]
styles.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY))
Story = [Spacer(1, 2 * inch)]
doc.build(Story, onFirstPage=myFirstPage, onLaterPages=myLaterPages)
if __name__ == "__main__":
createMultiPage()
所以,最终我需要确保我的图像在x轴上居中。具体来说,只有PartnerLogo需要这样做。此标志需要位于画布线的正上方并居中。请帮忙!
line_x_width
。将其替换为line_width = 530
应该可以解决这个问题。 - Kyle Heuton