pdfkit无法在rails 3.1中正确呈现

时间:2011-11-04 23:48:40

标签: ruby-on-rails-3 ruby-on-rails-3.1 pdf-generation wkhtmltopdf pdfkit

我已经按照以下railscast关于将pdfkit添加到应用程序中,并且我在生成pdf时遇到了一些问题。以下是我做过的事情:

我通过自制软件包管理器

下载了wkhtmltopdf
brew install wkhtmltopdf

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

require 'pdfkit'
...
config.middleware.use PDFKit::Middleware, :print_media_type => true

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

如果我运行rake中间件,该命令有效,我可以看到pdfkit中间件

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

1 个答案:

答案 0 :(得分: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
}