3

我遵循了以下关于将pdfkit添加到应用程序的 railscast,并且在生成 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 中的新资产管道有关,还有其他人遇到过这个问题吗?

4

1 回答 1

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
}
于 2011-11-05T19:17:30.787 回答