Python中文
首页
教程
问答
标签
搜索
登录
注册
使用Python和HTMLDOC动态地将html转换为pdf
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>大约一年前,我为一个客户机构建了一个Django应用程序。他现在已经把申请转售给了一些超级机密的政府机构,他们甚至不告诉我他的名字。在</p> <p>应用程序的一部分使用python库xhtml2pdf(pisa)动态生成PDF文件。政府不喜欢这个图书馆,他们不会告诉我为什么,他们说我必须使用<a href="https://www.msweet.org/projects.php?Z1" rel="nofollow">HTMLDOC</a>来生成pdf。在</p> <p>关于这个库的文档不多,但是从阅读PHP示例来看,您可以通过shell与它通信,因此它应该可以与Python一起工作。但是,我很难将html传递给HTMLDOC。看起来HTMLDOC只接受一个文件,但我确实需要将html作为字符串传递,因为它是动态生成的。(或者将html字符串写入临时文件,然后将该临时文件传递给HTMLDOC)。在</p> <p>我以为StringIO可以解决这个问题,但我得到了一个错误。以下是我所拥有的:</p> <pre><code>def render_to_pdf(template_src, context_dict): template = get_template(template_src) context = Context(context_dict) html = template.render(context) result = StringIO.StringIO(html.encode("utf-8")) os.putenv("HTMLDOC_NOCGI", "1") #this line throws "[Errno 2] No such file or directory" htmldoc = subprocess.Popen("htmldoc -t pdf --quiet '%s'" % result, stdout=subprocess.PIPE).communicate() pdf = htmldoc[0] result.close() return HttpResponse(pdf, mimetype='application/pdf') </code></pre> <p>任何想法、建议或帮助都将不胜感激。在</p> <p>谢谢。在</p> <p><strong>更新</strong></p> <p>堆栈跟踪:</p> ^{pr2}$
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>布莱格。多么可怕的要求,一个可怕的计划。在</p> <p>似乎没有任何方法可以将要转换的内容作为命令行选项。不过,它似乎确实接受了一个URL。因此,可以想象,您可以传递一个构造的URL,该URL引用同一服务器上的视图,然后在第二个视图中输出呈现的模板,然后由从第一个视图运行的HTMLDOC获取该模板。请注意,这将不适用于开发服务器,因为它是单线程的,因此视图将永远相互等待。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
在python3中使用Scipy pearsonr函数
4 回答
在Python3中使用scipy对多个lorentzian进行数据拟合
10 回答
在Python3中使用Script=argv
2 回答
在python3中使用selenium webdriver进行未解析的回溯
6 回答
在python3中使用selenium和phantomjs的网页截图之前如何等待?
7 回答
在Python3中使用Selenium和Requests模块从网页获取文件
7 回答
在python3中使用SIGINT终止函数
2 回答
在Python3中使用SIGTERM时,允许进程完成而不是中断
6 回答
在python3中使用smtplib发送XML内容
5 回答
在python3中使用socket库(RFCOMM模式)重新连接蓝牙设备?
8 回答
在python3中使用sounddevice和numpy编写wav文件
9 回答
在python3中使用Sqlalchemy插入MySQL查找类型错误的原因
4 回答
在python3中使用sqlite、pandas和sqlalchemy很难让rollback工作
9 回答
在python3中使用SQLite的FTS3/4
7 回答
在Python3中使用struct.calcsize()和len()有区别吗?
10 回答
在python3中使用substring函数时发生TypeError
1 回答
在Python3中使用Tkinter entry小部件写入串行设备
1 回答
在python3中使用tkinter时,如何在每次按下函数时获得运行该函数的按钮?
9 回答
在python3中使用tkinter的子帧
5 回答
在Python3中使用tryexcept块时,如何避免使用未初始化的变量?
9 回答