2

我将 wicked_pdf 插件与 rails 3.2 项目和资产管道一起使用。我想在 pdf.css.erb 中定义我的图片

这是我使用布局文件的控制器代码:

    respond_to do |format|
      format.html
      format.pdf do
        render :pdf => "Cars.pdf",
        :template => "reports/cars.html.haml",
        :page_size => "A4",
        :layout => "pdf.html",
        :handlers => [:haml]
      end
    end

这是我的布局文件,其中包含我的 pdf.css.erb 文件。

!!!
%html
    %head
        = wicked_pdf_stylesheet_link_tag "pdf"
        = csrf_meta_tag
    %body
        .contentbg
            .logo
            .content= yield

最后这是我的 CSS

.logo {
    background: wicked_pdf_image_tag "logo.jpg";
    width: 100px;
    height: 80px;
}

这没有找到 logo.jpg。如果我将 wicked_pdf_image_tag "logo.jpg" 行直接放在我的 pdf.html.haml 模板布局文件中,那么它会在生成的 pdf 中呈现我的徽标。

是否可以在 css.erb 文件中使用 wicked_pdf_image_tag 助手?

4

1 回答 1

1

这在 css.erb 文件中不起作用,首先是因为它缺少 erb 标签,但主要是因为 wicked_pdf_image_tag 会将其扩展为:

.logo {
  background: <img src="file://foo/bar/public/images/logo.jpg">;
}

这不是有效的CSS。最好的办法是手动构建它,如下所示:

.logo {
  background: url(<%= Rails.root.join('assets','images','logo.jpg').to_s %>);
}

拥有直接文件访问路径的原因是 wkhtmltopdf 不必发出网络请求来获取资产,因此加载速度更快。

于 2012-05-21T16:48:31.987 回答