ruby-on-rails 无法在Rails中使用wkhtmltopdf写入临时文件

zc0qhyus  于 2023-08-08  发布在  Ruby
关注(0)|答案(1)|浏览(104)

我正在使用Terrapin从Rails中的命令行执行wkhtmltopdf。

Terrapin::CommandLine.path = "/usr/bin/wkhtmltopdf"
pdfCommand = Terrapin::CommandLine.new("xvfb-run wkhtmltopdf :html_source :pdf_target")
tempHTML = Tempfile.new(["pattern", ".html"])
tempHTML << html
tempPDF = Tempfile.new(["pattern",".pdf"])
pdfCommand.run(html_source: tempHTML.path, pdf_target: tempPDF.path)

字符串
它运行,但返回:

QPainter::begin(): Returned false
Error: Unable to write to destination
Exit with code 1, due to unknown error.


我已经确定wkhtmltopdf拥有完全权限,我不确定Terrapin是否与此有关?
编辑:在控制台中运行xvfb-run wkhtmltopdf http://www.example.com test.pdf可以正常工作。

2jcobegt

2jcobegt1#

为了让Terrapin处理插值,它们需要在new的第二个参数中。也就是说,它期望你正在运行的命令与其中包含插值的字符串分开:

Terrapin::CommandLine.new("xvfb-run", "wkhtmltopdf :html_source :pdf_target")

字符串
如果你在脚本中添加Terrapin::CommandLine.logger = Logger.new(STDOUT),你会看到terrapin试图运行xvfb-run wkhtmltopdf :html_source :pdf_target

相关问题