我使用ReportLab構建PDF。我的程序有MyDocTemplate(SimpleDocTemplate)
類,有兩種方法:beforePage(self)
和afterPage(self)
,它在每個頁面上添加頁眉和頁腳(如PNG圖像)。還有一個描述ParagraphStyle
的MyDocStyle
類。ReportLab:模板'First'的框架'正常'頁面1上的可流動性過大
主要方法是這樣的:
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文件和圖形用戶界面。時不時(取決於數據長度)我收到一個錯誤:
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'
此異常停止我的程序。對於我在MyDocStyle
類h2.keepWithNext = 1
中設置的簡短段落,它不是完美的解決方案。如果段落末尾與頁面末尾(文本區域)不「重合」,ReportLab將正確分割長段落。
我該如何處理?
我面臨同樣的問題,很少有測試顯示Spacer似乎不是問題。請不要讓用戶害怕使用它,除非您的假設背後有其他基礎。 – Priyeshj