我在SO中已经完成了有关此事的所有问题,并尝试了所有技巧而没有进一步深入。
环境是开发模式下的Rails 3.0.9,在VMPlayer VM中的Ubuntu 10.4上运行。
我使用apt-get安装了wkhtmltopdf,二进制文件来自/ usr / bin /。从终端使用时,二进制文件工作得很好。
确切的错误消息如下:
command failed: "/usr/bin/wkhtmltopdf" "--page-size" "letter" "--orientation" "landscape" "--quiet"
我在application.rb中设置了以下配置:
PDFKit.configure do |config|
config.wkhtmltopdf = "/usr/bin/wkhtmltopdf"
config.default_options = {
:page_size => 'letter',
:orientation => 'landscape'
}
在rails控制台中,创建一个PDFKit.new,使用相同的url产生该错误,并将其保存到文件中可以正常工作。操作中的代码如下所示:
@url = params[:url]
@kit = PDFKit.new(Base64.decode64(@url))
@filename = "#{Time.now.strftime("%Y%m%d-%H%M%S")}owner.pdf"
@filepath = "#{Rails.root}/public/pdfs/#{@filename}"
@file = File.open(@filepath, 'w')
@kit.to_file(@file.path)
@file = File.open(@filepath, 'r')
send_data(@file.read, :type => "pdf", :filename => @filename)
基本上,url是用Base64编码编码的,并在控制器动作中解码。 url编码/解码部分工作正常,这不应该是问题的一部分。
pdf(/应该)保存到带有时间戳的文件中,并发送给用户下载。
权限被设置为this问题建议中的答案。我尝试过使用wkhtmltopdf gem,没有帮助。
我真的对此感到沮丧,并且非常感谢任何帮助我正确指出错误的方向。
编辑: 命令本身似乎工作正常。我将错误信息中的命令粘贴到终端,然后就可以了。所以我想不出问题的任何其他原因而不是权限问题。检查...