【发布时间】:2011-12-24 02:02:49
【问题描述】:
我有一个使用 pdfkit 创建 pdf 文档的 rails 3.1 应用程序,除了生成的 pdf 没有任何样式之外,一切都按规定工作。我假设 wkhtmltopdf 无权访问我的样式表,并且这不是比这更大的问题。有人知道您将如何允许访问这些样式表吗?我基本上遵循了关于该主题的 railscast #220,但是我必须创建一个新的初始化程序以使 pdfkit 与 rails 3.1 一起使用。
这是我必须用来让 pdfkit 与 rails 3.1 一起使用的初始化程序
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
}
pdf 的链接如下所示:
<%= link_to 'Download PDF', load_path(@load, :format => "pdf") %>
这会给我一个没有样式的 pdf 的链接。
在我的 application.rb 中,我已将 pdfkit 配置为:
config.middleware.use PDFKit::Middleware, :print_media_type => true
我也将此添加到我的 layouts/application.html.erb 文件中:
<%= stylesheet_link_tag "application", :media => "all" %>
【问题讨论】:
-
我已经添加了更多代码,如果您需要视觉或任何其他信息,我很乐意提供帮助。
-
我遇到了同样的问题。使用 Rails 3.1 和资产管道会使上述所有初始化程序和 hacks 无用。想不出办法。
-
您确定指定了
:media => "all"吗?我很惊讶地看到默认设置仅为“屏幕”。另一种检查方法:如果您要求浏览器打印,页面是否设置了样式? -
@tomciopp 你解决了吗?这几天我一直在和它搏斗……
-
这并不是一个真正的“解决方案” - 而是一种解决方法,因为自从最初报告此问题以来已经有好几年了,而且可能永远无法修复。把你的样式放在一个普通的视图文件中,用
标签: ruby-on-rails css ruby-on-rails-3.1 pdf-generation pdfkit