1

我已经解决了 SO 中有关此事的所有问题,并尝试了所有技巧,但没有进一步深入。

环境是处于开发模式的 Rails 3.0.9,在 VMPlayer 虚拟机中运行在 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 被(/应该)保存到带时间戳的文件中,并发送给用户下载。

权限设置为这个问题的答案建议。我试过使用 wkhtmltopdf gem,没有帮助。

我对此感到非常沮丧,并且非常感谢任何对我正确方向的帮助。

编辑:命令本身似乎工作正常。我将错误消息中的命令复制粘贴到终端中,它可以工作。所以我想不出除了权限问题之外的任何其他原因。检查...

4

0 回答 0