我用ReportLab构建PDF。我的程序有一个MyDocTemplate(SimpleDocTemplate)
类,有两个方法:beforePage(self)
和{MyDocStyle
类描述ParagraphStyle
。在
Main方法如下所示:
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。有时(取决于数据长度)我会收到一个错误:
^{pr2}$这个异常停止了我的程序。对于简短的段落,我在MyDocStyle
类h2.keepWithNext = 1
中设置,但这并不是完美的解决方案。如果段落末尾与页面末尾(文本区域)不“一致”,ReportLab将正确拆分长段落。在
我该怎么处理呢?在
已解决。不要使用},例如:
Spacer
(例如Spacer(1, 0.2*cm)
)作为Paragraph
的分隔符。相反,在ParagraphStyle
中定义spaceBefore
和{当ReportLab尝试将分隔符拆分为两个页面时,会发生此错误。似乎解决此问题的唯一方法是将间隔垫圈包装到KeepTogether元素中:
相关问题 更多 >
编程相关推荐