如何将多个 StringIO 传递到 python-pdfkit?
How do I pass multiple StringIO into python-pdfkit?
目标:
- 使用 django 模板语言。
- 在内存中渲染模板(无磁盘写入)。
- 将呈现的内容推送到 StringIO 实例。
- 在 python-pdfkit.
中使用实例
问题:
尝试传递列表中的多个文件时,我一直收到 TypeError: coercing to Unicode: need string or buffer, instance found
。
下面的代码在没有 []
和只有一个 StringIO 实例的情况下工作。
来自 django.template 导入加载程序,上下文
从 django 导入模板
导入 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
使用 StringIO 似乎不是文档中推荐的方法。
我刚刚试过了,效果很好。您有什么理由不想这样做吗?
pdfkit.from_url(['google.com', 'yandex.ru', 'engadget.com'], 'out.pdf')
这不是你的错。发生这种情况是因为 pdf kit 将列表中的每个元素假定为文件路径而不是文件描述符。
我有一个类似的情况 HTML 分布在多个模板中。我将它们全部放在一个字符串中,然后将 StringIO 传递给 pdfkit。我使用 CSS 来管理分页符和其他 wkhtmltopdf 格式设置选项。
希望对您有所帮助。
目标: - 使用 django 模板语言。 - 在内存中渲染模板(无磁盘写入)。 - 将呈现的内容推送到 StringIO 实例。 - 在 python-pdfkit.
中使用实例问题:
尝试传递列表中的多个文件时,我一直收到 TypeError: coercing to Unicode: need string or buffer, instance found
。
下面的代码在没有 []
和只有一个 StringIO 实例的情况下工作。
来自 django.template 导入加载程序,上下文 从 django 导入模板 导入 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
使用 StringIO 似乎不是文档中推荐的方法。
我刚刚试过了,效果很好。您有什么理由不想这样做吗?
pdfkit.from_url(['google.com', 'yandex.ru', 'engadget.com'], 'out.pdf')
这不是你的错。发生这种情况是因为 pdf kit 将列表中的每个元素假定为文件路径而不是文件描述符。
我有一个类似的情况 HTML 分布在多个模板中。我将它们全部放在一个字符串中,然后将 StringIO 传递给 pdfkit。我使用 CSS 来管理分页符和其他 wkhtmltopdf 格式设置选项。
希望对您有所帮助。