0

我正在使用 PDFKit 和它的 Middlware 将 HTML 呈现为 PDF,但是当我尝试转到 localhost:3000/booklets/1.pdf 时它一直出现 TypeError

can't convert Hash into String

它说错误在 BookletsController#show 中。这是我的booklets_controller.rb的摘录

  def show
    @booklet = Booklet.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.pdf {
        html = render_to_string(:action => "show.html.erb", :formats => [:html])
        kit = PDFKit.new(html)
        send_data(kit.to_pdf, :filename => "booklet.pdf", :type => 'application/pdf')
      return
      }
    end
  end

环境.rb

# Initialize the rails application
Ziin::Application.initialize!

Mime::Type.register "application/pdf", :pdf

摘自application.rb

require 'pdfkit'
config.middleware.use "PDFKit::Middleware"

PDFKit.configure do |config|
    config.wkhtmltopdf = { :exe_path => '/usr/local/bin/wkhtmltopdf' }
end
4

1 回答 1

0

问题是您指定的执行路径。我只是在我自己的机器(ubuntu 12.04)上复制了这个问题,我通过不使用 wkhtmltopdf 的 gem install 来修复它,它添加了一些不起作用的 wkhtmltopdf 版本。

1.) 在此处查看如何安装 wkhtmltopdf(非 gem 版本) https://github.com/pdfkit/pdfkit/wiki/Installing-WKHTMLTOPDF

2.) 从您的 gem 文件中删除 'wkhtmltopdf'

3.) 通过执行“which wkhtmltopdf”找到 wkhtmltopdf 可执行文件。使用 exe_path 声明中返回的路径。

4.)不知道下一步是否重要,但我搬家了:

PDFKit.configure 做 |config| config.wkhtmltopdf = { :exe_path => "#{PATH}" 结束

进入 config/initializers/pdfkit.rb

  • 还可以通过“gem uninstall wkhtmltopdf”删除 gem
于 2013-02-02T06:50:00.457 回答