gpt4 book ai didi

python - Platypus - 在页面模板中使用多个框架

转载 作者:行者123 更新时间:2023-12-01 03:24:14 25 4
gpt4 key购买 nike

我正在为一个基于 Django 的网站编写一些 PDF 生成代码,使用 ReportLab/Platypus 生成 PDF。

我对 PageTemplate 进行了子类化,这样我就可以进行一些一致的页面修剪,并包含用于生成多列布局的代码以满足需求。我目前已打开 showBoundary=1 进行调试。

但是,当我渲染两列布局时,我只看到出现的第一个帧边界。可能出了什么问题?

class ReportPageTemplate(PageTemplate):
def __init__(self, id='basic', columns=1, pagesize=A4, leftMargin=(2*cm), bottomMargin=(2.1*cm), colmargin=(0.5*cm)):
(right, top) = pagesize
right -= leftMargin
top -= bottomMargin

height = top - bottomMargin
width = (right - leftMargin)
# Subtract out blank space between columns
colwidth = (width - ((columns - 1) * colmargin)) / columns

frames = []
for col in range(columns):
left = leftMargin + (col * (colwidth + colmargin))
frames.append(Frame(left, bottomMargin, colwidth, height, showBoundary=1))

PageTemplate.__init__(self, id=id, frames=frames, pagesize=pagesize)

def beforeDrawPage(self, canvas, doc):
print self.id
(width, height) = canvas._pagesize
canvas.setLineWidth(0.2 * cm)
canvas.line(0.5*cm, height - (2*cm), width - (0.5*cm), height - (2*cm))
canvas.line(0.5*cm, (2*cm), width - (0.5*cm), (2*cm))

最佳答案

啊,我觉得自己很愚蠢。

仅当第一帧填满时才渲染第二帧。出于测试目的,我需要包含一个 FrameBreak 对象以强制它绘制两列。

代码实际上已经可以工作了。

关于python - Platypus - 在页面模板中使用多个框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41585831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com