目标: - 使用django模板语言。 - 在内存中渲染模板(无磁盘写入)。 - 将呈现的内容推送到StringIO实例。 - 在python-pdfkit中使用实例。
问题:
在尝试传递列表中的多个文件时,我不断获得TypeError: coercing to Unicode: need string or buffer, instance found
。
以下代码在没有[]
且只有一个StringIO实例的情况下工作。
来自django.template导入加载程序,Context 来自django导入模板 import StringIO
STATIC_URL = "https://d1i1yohwujljp9.cloudfront.net/static/"
t = loader.get_template('pdf_coverpage.html')
c = template.Context( {'STATIC_URL': STATIC_URL })
output = StringIO.StringIO()
output.write(t.render(c))
output1 = StringIO.StringIO()
output1.write(t.render(c))
pdfkit.from_file([ output, output1 ] , 'out.pdf' )
回溯。
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Python27\lib\site-packages\pdfkit\api.py", line 44, in from_file
configuration=configuration)
File "C:\Python27\lib\site-packages\pdfkit\pdfkit.py", line 37, in __init__
self.source = Source(url_or_file, type_)
File "C:\Python27\lib\site-packages\pdfkit\source.py", line 12, in __init__
self.checkFiles()
File "C:\Python27\lib\site-packages\pdfkit\source.py", line 28, in checkFiles
if not os.path.exists(path):
File "C:\Python27\lib\genericpath.py", line 18, in exists
os.stat(path)
TypeError: coercing to Unicode: need string or buffer, instance found
答案 0 :(得分:1)
这不是你的错。发生这种情况是因为pdf工具包假定列表中的每个元素都是文件路径而不是文件描述符。
我有类似的HTML分布在多个模板中的情况。我将它们全部放在一个字符串中并将StringIO传递给pdfkit。我使用CSS来管理分页符和其他wkhtmltopdf格式化选项。
希望有所帮助。
答案 1 :(得分:0)
使用StringIO似乎不是文档中推荐的方法。
我刚试过这个并且工作正常。你有没有理由不想这样做?
pdfkit.from_url(['google.com', 'yandex.ru', 'engadget.com'], 'out.pdf')