如何使用xhtml2pdf附加两个“ pisaContext”对象python。
我的要求是将两个页面分别呈现为2个不同的pdf,然后合并返回合并的pdf。
答案 0 :(得分:0)
我知道这是一个老问题,但是今天我面临这个问题,这是我使用PyPDF2的解决方案:
from StringIO import StringIO
from xhtml2pdf import pisa
from PyPDF2 import PdfFileMerger
# html1 and html2 are strings with the html content.
# link_callback is a function that return the path of files requested in the PDF file
pdf1_file = StringIO()
pdf1 = pisa.pisaDocument(
StringIO(html1.encode('UTF-8')),
pdf1_file,
link_callback=link_callback,
encoding='UTF-8'
)
pdf2_file = StringIO()
pdf2 = pisa.pisaDocument(
StringIO(html2.encode('UTF-8')),
pdf2_file,
link_callback=link_callback,
encoding='UTF-8'
)
if not pdf1.err and not pdf2.err:
merger = PdfFileMerger()
merger.append(pdf1_file)
merger.append(pdf2_file)
merger.write("files_merged.pdf")
基本上,我使用StringIO
在内存中渲染两个pisaDocument,并使用PdfFileMerger
方法将它们传递到append
,最后写入名为“ files_merged.pdf”的文件。您还可以将StringIO
实例传递给write
方法,并在内存中执行所有操作:
if not pdf1.err and not pdf2.err:
merger = PdfFileMerger()
merger.append(pdf1_file)
merger.append(pdf2_file)
output = StringIO()
merger.write(output)
file_content = output.getvalue()