pdfkit无法在rails 3.1中正确呈现

tom*_*opp 3 pdf-generation pdfkit wkhtmltopdf ruby-on-rails-3 ruby-on-rails-3.1

我一直遵守以下railscast有关添加pdfkit到一个应用程序,和我有PDF文件的产生一些问题.以下是我做过的事情:

我通过自制软件包管理器下载了wkhtmltopdf

brew install wkhtmltopdf
Run Code Online (Sandbox Code Playgroud)

然后我将pdfkit gem添加到我的gemfile并运行bundle install命令.我在config/application.rb文件中添加了以下内容

require 'pdfkit'
...
config.middleware.use PDFKit::Middleware, :print_media_type => true
Run Code Online (Sandbox Code Playgroud)

然后我更改了我的应用程序布局文件以包含所有样式表类型.

如果我运行rake中间件,命令工作,我可以看到pdfkit中间件

当我尝试将pdf附加到我的路由末尾时,应用程序就会挂起,我必须通过命令行退出.如果我创建一个指向我想要制作成pdf页面的链接,它会更改所有标记,使其看起来像一个损坏的文件.(看起来你将文本文件打开到文字处理器中,反之亦然,如果有帮助,我可以提供图像)如果我尝试在样式表中进行css更改,当我使用pdf链接查看时,它们不会生效.我假设这与rails中的新资产管道有关,还有其他人遇到过这个问题吗?

tom*_*opp 15

所以我认为我的错误与资产管道有关,在进行一些研究之后看起来你需要创建一个新的初始化程序并添加以下代码:

ActionController::Base.asset_host = Proc.new { |source, request|
  if request.env["REQUEST_PATH"].include? ".pdf"
    "file://#{Rails.root.join('public')}"
  else
    "#{request.protocol}#{request.host_with_port}"
  end
}
Run Code Online (Sandbox Code Playgroud)