2013-12-17 83 views
0

这样它生成PDF文档时,正在运行命令:Merb的 - wkhtmltopdf命令失败

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

但是这里面的应用程序使用时pdfkit宝石它显示错误

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
  • Merb的应用
  • 红宝石1.8.7

回答

0

问题从

bundle exec merb -a thin #default port 4000 

通过改变服务器端口号

sovled到

bundle exec merb -a thin -p 3000 

以及使用该宝石 “wkhtmltopdf二进制”

说明

有时会发现我们在开发中使用的单线程Web服务器可能会导致竞争状况。浏览器绑定可用的一个线程,并开始一个新的Web请求来创建PDF文件html,这会导致第二个Web请求。由于您唯一的Web服务器线程已被使用,您可以找到它挂起。

为了解决这个问题,可以运行更多的线程。或者使用另一个端口进行内部访问,并且有内部URL