如何将多个 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')

https://pypi.python.org/pypi/pdfkit

这不是你的错。发生这种情况是因为 pdf kit 将列表中的每个元素假定为文件路径而不是文件描述符。

here is the relevant code

我有一个类似的情况 HTML 分布在多个模板中。我将它们全部放在一个字符串中,然后将 StringIO 传递给 pdfkit。我使用 CSS 来管理分页符和其他 wkhtmltopdf 格式设置选项。

希望对您有所帮助。