背景图像(水印)与邪恶的PDF格式

时间:2014-05-11 23:58:20

标签: css ruby-on-rails pdf watermark wicked-pdf

我需要在我使用wicked-pdf生成和转换为PDF的各种文档上使用图像作为水印。花了一段时间,但我几乎一切正常。我的show.pdf.erb是:

<!DOCTYPE html>
<html>
  <head >
    <style type="text/css">
        <%= Rails.application.assets.find_asset('wicked.css').to_s.html_safe %>
    </style>
  </head>
  <body class='wicked'>
    <div>
        <p><%= "#{Doc.last.contents} ".html_safe %></p>
    </div>
  </body>
</html>

我的wicked.css是:

.wicked {
  background-image:url(/assets/test2.jpg);
  background-repeat: no-repeat;
  background-position: 50% -15%;
}

我的控制器只是打电话:

    render :pdf             => "test2",
        :formats        => [:pdf],
        :show_as_html       => true

这一切都很好。从数据库中提取的水印和文本正确显示。但是,当我删除&#34; show_as_html&#34;从控制器,水印消失,只有文本显示为PDF。同样,如果我添加&#34; save_to_file&#34;,文件只保存文本而没有水印。我对自己可能做错了什么感到困惑。我无法在任何日志中找到任何错误。感谢您的任何建议。

3 个答案:

答案 0 :(得分:3)

我通过使用SASS asset-data-urlrelative-asset-path解决了这个问题,也许你可以使用这样的东西:

background-image: asset-data-url('test2.png')

答案 1 :(得分:1)

这在WickedPdf Github问题跟踪器中解决了:

https://github.com/mileszs/wicked_pdf/issues/302

这里的基本问题是url(/assets/test2.jpg)是一个相对路径,当WickedPdf需要一个绝对路径时,内容应该像这样引用:

url('file:///home/unconundrum/code/my_app/app/assets/images/test2.jpg')

可以通过这种方式更便携地完成:

background-image:url('<%= "file://#{Rails.root.join('app','assets','images','test2.jpg')}" %>');

带有ERB样式表。

答案 2 :(得分:0)

我在大学申请时遇到了同样的问题。 解决为:

background-image: url("file://#{Rails.root.join('app/assets/images/marksheet-background.jpg')}");