python - ReportLab:Flowable 在模板 'normal' 的框架 'First' 中的第 1 页太大

标签 python reportlab

我使用 ReportLab 构建 PDF。我的程序有一个 MyDocTemplate(SimpleDocTemplate) 类,它有两个方法:beforePage(self)afterPage(self),它们添加页眉和页脚(如PNG 图像)在每一页上。还有一个 MyDocStyle 类,它描述了 ParagraphStyle

主要方法如下所示:

TITLE = Paragraph(Title, MyDocStyle.h1)
TO = Paragraph(To, MyDocStyle.h2)
FROM = Paragraph(From, MyDocStyle.h2)
SUBJECT = Paragraph(Subject, MyDocStyle.h2)
LONG_PARAGRAPH = Paragraph(Text, MyDocStyle.h3)
...

Elements = [TITLE, TO, FROM, SUBJECT, LONG_PARAGRAPH, ...]
doc = MyDocTemplete('output.pdf', pagesize=A4, 
                     leftMargin=2*cm, rightMargin=2*cm,
                     topMargin=4*cm, bottomMargin=4*cm)
doc.build(Elements)

数据来自 CSV 文件和 GUI。有时(取决于数据长度)我收到一个错误:

Flowable <Spacer at 0x2631120 frame=normal>...(1 x 5.66929133858) too large
on page 1 in frame 'normal'(469.88976378 x 603.118110236) of template 'First'

这个异常停止了我的程序。对于我在 MyDocStyleh2.keepWithNext = 1 中设置的短段落,但这不是完美的解决方案。如果段落结尾与页面结尾(文本区域)不“重合”,ReportLab 会正确拆分长段落。

我该如何处理?

最佳答案

当 ReportLab 尝试将 Spacer 拆分为两页时会发生此错误。似乎解决此问题的唯一方法是将您的 Spacer 包装到 KeepTogether 元素中:

elements.append(KeepTogether(Spacer(width, height)))

关于python - ReportLab:Flowable 在模板 'normal' 的框架 'First' 中的第 1 页太大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7701143/

相关文章:

python - 如何将这些列表合并到一个列表中?

python - 将页面布局感知水平线添加到 ReportLab 表格布局

Python reportlab 在第一页完全充满文本后动态创建新页面

python - 一组 pandas 数据帧内的行操作

Python Pandas - 错误 : Can only compare identically-labeled Series objects

python - urlencode 值数组

python - 如何在 Python 中对有异常的列表进行排序

Python 和 ReportLab : add a string at the end of every page

python - 在 reportlab 中,将尽可能多的空行添加到适合最后一页的长表中

python - reportlab SimpleDocTemplate - 设置具有可变行数的表格的固定高度