Python Table 内的 ReportLab 图片

Python ReportLab Pictures within Table

我正在使用 Reportlab 生成包含一堆 table 和图表的 PDF。

我可以使用 TableStyle 大致得到我想要的东西:

def get_image(path, width=1*cm):
    img = utils.ImageReader(path)
    iw, ih = img.getSize()
    aspect = ih / float(iw)
    return Image(path, width=width, height=(width * aspect),hAlign='LEFT')

# Use basic styles and the SimpleDocTemplate to get started with reportlab
styles=getSampleStyleSheet()
doc = SimpleDocTemplate("NCM_weekly.pdf",pagesize=letter,
                        rightMargin=inch/2,leftMargin=inch/2,
                        topMargin=18,bottomMargin=18)

# The "story" just holds "instructions" on how to build the PDF
Story=[]

im = Image(r'\dcmfs01\common\DYang\Nymeria\Production Reports\ncm_logo.jpeg')
Story.append(Spacer(1,200))
Story.append(im)
Story.append(PageBreak())

add_text('Weekly Packet',style='Heading1',fontsize=24)
add_text(today, style="Heading2", fontsize=12)

image0 = get_image(r'\dcmfs01\common\DYang\Nymeria\Production Reports\exps.jpeg', width=4*inch)
Story.append(image0)

im = Image(buf_perf, 7*inch, 3*inch)
Story.append(im)

image1 = get_image(r'\dcmfs01\common\DYang\Nymeria\Production Reports\pnl.jpeg', width=4*inch)
image2 = get_image(r'\dcmfs01\common\DYang\Nymeria\Production Reports\fac_pnl.jpeg', width=4*inch)
image3 = get_image(r'\dcmfs01\common\DYang\Nymeria\Production Reports\ind_pnl.jpeg', width=4*inch)

# assuming image1, image2, image3 are your images. change colWidths and rowHeights 
# as needed

chart_style = TableStyle([('VALIGN', (0, 0), (-1, -1), 'TOP')])

Story.append(Table([[image1, image2],[image3]],
                     colWidths=[4 * inch, 4 * inch],
                     rowHeights=[2.5 * inch, 2.5 * inch], style=chart_style))

# This command will actually build the PDF
doc.build(Story)

# closer all buffers
buf_perf.close()

这让我明白了:

问题是我想把底部的图(是一张图片)向上移动以填充白色space,我理解这个白色space是因为我有一个 table 网格,右边的图片占用了太多的 Z 轴。我想我的问题是,最好的解决方案是什么?

您必须使用 span 和 aling 属性来扩展像元大小并获得适当的分布。请参阅第 88 页的文档 (https://www.reportlab.com/docs/reportlab-userguide.pdf),我做了类似的事情:

如果我有图片和完整的代码,会更有帮助。