我有一个报告实验室SimpleDocTemplate
并将其作为动态 PDF 返回。我正在根据一些 Django 模型元数据生成它的内容。这是我的模板设置:
buff = StringIO()
doc = SimpleDocTemplate(buff, pagesize=letter,
rightMargin=72,leftMargin=72,
topMargin=72,bottomMargin=18)
Story = []
我可以轻松地将Entry
模型中的文本元数据添加Story
到稍后要构建的列表中:
ptext = '<font size=20>%s</font>' % entry.title.title()
paragraph = Paragraph(ptext, custom_styles["Custom"])
Story.append(paragraph)
build
然后通过调用以下命令生成要在响应中返回的 PDF SimpleDocTemplate
:
doc.build(Story, onFirstPage=entry_page_template, onLaterPages=entry_page_template)
pdf = buff.getvalue()
resp = HttpResponse(mimetype='application/x-download')
resp['Content-Disposition'] = 'attachment;filename=logbook.pdf'
resp.write(pdf)
return resp
模型上的一个元数据字段是文件附件。当这些文件附件是 PDF 时,我想将它们合并到我正在生成的故事中;IE 表示reportlab“可流动”类型的PDF。
我正在尝试使用pdfrw
,但没有任何运气。理想情况下,我很想打电话:
from pdfrw import PdfReader
pdf = pPdfReader(entry.document.file.path)
Story.append(pdf)
并将 pdf 附加到现有的故事列表中,以包含在最终文档的生成中,如上所述。
有人有想法么?我尝试使用 pagexobj 进行类似的操作来创建 pdf,并尝试遵循以下示例:
http://code.google.com/p/pdfrw/source/browse/trunk/examples/rl1/subset.py
from pdfrw.buildxobj import pagexobj
from pdfrw.toreportlab import makerl
pdf = pagexobj(PdfReader(entry.document.file.path))
但也没有运气。有人可以向我解释将现有PDF文件合并到reportlab flowable的最佳方法吗?我对这些东西并不擅长,并且几天来一直在研究 pdf 生成。:) 任何方向都非常感谢!