【发布时间】:2015-03-04 00:00:24
【问题描述】:
我正在使用 django 并在 this example 之后生成报告,我需要生成最后一页但没有页眉或页脚和不同的内容。
我正在尝试这样做:
def print_example(self):
buffer = self.buffer
doc = SimpleDocTemplate(buffer,
rightMargin=72,
leftMargin=72,
topMargin=72,
bottomMargin=72,
pagesize=self.pagesize)
elements = []
elements.append(Paragraph('Content for all pages'), my_custom_style)
# ...
doc.build(elements, onFirstPage=self._header_footer, onLaterPages=self._header_footer,
canvasmaker=NumberedCanvas)
doc2 = SimpleDocTemplate(buffer,
rightMargin=72,
leftMargin=72,
topMargin=72,
bottomMargin=72,
pagesize=self.pagesize)
elements2 = []
elements2.append(Paragraph('Content for the last page only'), my_custom_style)
doc2.build(elements2, canvasmaker=NumberedCanvas)
# Get the value of the BytesIO buffer and write it to the response.
pdf = buffer.getvalue()
buffer.close()
return pdf
然后只有最后的内容出现,之前的内容消失。
如何生成具有不同内容的最后一页?
【问题讨论】:
-
doc和doc2使用相同的缓冲区。这意味着当您执行doc2.build时,您可能会覆盖缓冲区中的先前构建。尝试将最后一段包含在您用于构建的元素列表中,或者在下一次构建之前将构建结果存储在变量中。您如何决定何时仅显示最后一页的内容尚不清楚,因此您的修复将取决于此。