0

当我运行这样的命令时,它会生成 pdf 文档:

$ wkhtmltopdf http://google.com google.pdf
Loading pages (1/5)
Resolving links (2/5)                                              
Counting pages (3/5)                                                      
Printing pages (5/5)                                                      
Done   

但是当通过 pdfkit gem 使用内部应用程序时,它显示错误

merb : worker (port 4000) ~ command failed: "/usr/local/bin/wkhtmltopdf" "--page-size" "Letter" "--print-media-type" "--margin-right" "0.0in" "--encoding" "UTF-8" "--margin-top" "0.5in" "--margin-bottom" "0.5in" "--margin-left" "0.0in" "--quiet" "-" "-" - (RuntimeError)

尝试了什么:

设置路径

config.wkhtmltopdf = '/usr/local/bin/wkhtmltopdf '

安装依赖项

sudo aptitude install openssl build-essential xorg libssl-dev

环境

  • Ubuntu 12.04 amd64
  • 合并申请
  • 红宝石 1.8.7
4

1 回答 1

0

通过更改服务器端口号解决的问题

bundle exec merb -a thin #default port 4000

bundle exec merb -a thin -p 3000

并使用宝石“wkhtmltopdf-binary”

解释

有时会发现我们在开发中使用的单线程 Web 服务器会导致竞态条件。浏览器正在占用一个可用线程,并开始一个新的 Web 请求以创建 pdf 文件 html,这会导致第二个 Web 请求。由于您唯一的 Web 服务器线程已在使用中,因此您会发现它挂起。

要解决此问题,请运行更多线程。或使用另一个端口进行内部访问,并且必须是内部 URL

于 2013-12-19T05:50:13.780 回答