我正在使用django作为一个非常具体的网站,我需要使用命令行和wkhtmltopdf
生成pdf。
大部分时间它效果很好,但有时我会收到此错误:
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并且强制编码不会改变任何内容。
非常感谢任何帮助。谢谢!