我正在尝试将HTML转换为Django中的PDF文档但尚未成功。
我尝试过使用wkhtmltopdf 0.9.9,但是Apache抛出了wkhtmltopdf无法连接到服务器的错误。当我直接使用wkhtmltopdf时,它运行得很好并将HTML转换为PDF文档。
我也尝试过使用unoconv,但渲染的PDF文件没有应用任何CSS。我也尝试过使用xhtml2pdf。我再次面临同样的问题;渲染的PDF文件没有应用任何CSS样式。我花了今天和昨晚的大部分时间试图解决这个问题,我仍然没有更接近解决问题。
如果您需要更多信息,请与我们联系
答案 0 :(得分:4)
为Django配置Pisa不应该是too hard。
网上有几个例子可以告诉你如何做到这一点 解释如何链接到模板中的外部资源:
在你的情况下,你应该尝试第一篇博文中提到的链接回调函数:
def fetch_resources(uri, rel):
"""
Callback to allow pisa/reportlab to retrieve Images,Stylesheets, etc.
`uri` is the href attribute from the html link element.
`rel` gives a relative path, but it's not used here.
"""
path = os.path.join(settings.MEDIA_ROOT, uri.replace(settings.MEDIA_URL, ""))
return path
对于较新的Django版本,您可能应该使用STATIC_ROOT
代替MEDIA_ROOT
然后在渲染方法中相应地使用fetch resources
:
pdf = pisa.pisaDocument(StringIO.StringIO(
html.encode("UTF-8")),
result,
link_callback=fetch_resources,
encoding="utf-8")
答案 1 :(得分:0)
我建议你使用pisa,pypdf和html5lib组合,它对我有用。
答案 2 :(得分:0)
一个可能但不那么优雅的解决方案是运行一个小脚本,通过无头浏览器组件(Linux上的webkit / xvfb)呈现html,然后将其保存为pdf。