我正在使用Reportlab创建PDF。我正在创建两个PDF,我想在创建后合并它们。Reportlab提供了一种将pycanvas (source)(基本上是内存中的pdf文件)保存为python文件的方法,并对该python文件调用doIt(filename)方法,将重新创建pdf文件。这很好,因为您可以在源代码的基础上组合两个pdf并创建一个合并pdf。在
这是这样做的:from reportlab.pdfgen import canvas, pycanvas
#create your canvas
p = pycanvas.Canvas(buffer,pagesize=PAGESIZE)
#...instantiate your pdf...
# after that, close the PDF object cleanly.
p.showPage()
p.save()
#now create the string equivalent of your canvas
source_code_equiv = str(p)
source_code_equiv2 = str(p)
#merge the two files on str. basis
#not shown how it is exactly done, to make it more easy to read the source
#actually one just have to take the middle part of source_code_equiv2 and add it into source_code_equiv
final_pdf = source_code_equiv_part1 + source_code_equiv2_center_part + source_code_equiv_part2
#write the source-code equivalent of the pdf
open("n2.py","w").write(final_pdf)
from myproject import n2
p = n2.doIt(buffer)
# Get the value of the StringIO buffer and write it to the response.
pdf = buffer.getvalue()
buffer.close()
response.write(pdf)
return response
这很好,但是我想跳过将n2.py保存到磁盘的步骤。因此,我正在寻找一种从最终的\u pdf字符串实例化相应的python类并直接在源代码中使用它的方法。这可能吗?在
它应该是这样工作的。。在
^{pr2}$
原因主要是不需要将源代码保存到磁盘上,其次,它绝对不是线程保存。我可以在运行时命名创建的文件,但是我不知道要导入什么!?如果无法阻止文件保存,是否有方法根据运行时定义的文件名定义导入!?在
有人可能会问我为什么不提前创建一个pdf,但这是不可能的,因为它们来自不同的应用程序。在