我将 django 用于一个非常具体的网站,我需要使用命令行和wkhtmltopdf
.
大多数时候它工作得很好,但有时我会收到这个错误:
execv() arg 2 must contain only strings
这是错误的代码:
# Get our HTML page as string
payload = show_pdf(request, as_pdf=True)
file_data = render_to_string('quotation/pdf.html', payload, RequestContext(request))
#First echo our HTML page's string and give it to wkhtmltopdf for smooth transformation to pdf
p1 = subprocess.Popen(['echo', file_data], stdout=subprocess.PIPE)
p2 = subprocess.Popen(['wkhtmltopdf', '-q', '--zoom', zoom_factor, '--encoding', 'utf-8', '-', 'test.pdf'], stdin=p1.stdout, stdout=subprocess.PIPE)
p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
output = p2.communicate()[0]
我怀疑存在编码问题,但我的 html 页面已经呈现为 utf-8 并且强制编码不会改变任何内容。
任何帮助是极大的赞赏。谢谢 !