Wicked_PDF第一页的不同保证金设置?

时间:2014-11-19 06:19:11

标签: ruby-on-rails ruby-on-rails-4 wkhtmltopdf wicked-pdf

使用:

wkhtmltopdf-binary 0.9.9.1
wicked_pdf         0.10.2
rails              4.1.7
ruby               2.1.3
OS X               10.10.1 (64-bit)

我有一个占用一些空间的标题,所以我必须在我的WickedPDF选项中使用:margin => { :top => 40 }(以及标题间距)。但是,我不希望这个在我的第一页,因为标题仅用于第2页及以上。我如何实现这一目标?

尝试

  1. 对于第一页中的内容,我尝试通过CSS:

    position: absolute;
    top: -20;
    

    这导致内容被剪辑"边缘地区。似乎应用:margin => {:top=>40}会在标题片段和PDF内容之间创建一个阻塞的白色矩形。

  2. 我尝试在第一页使用:cover选项。不幸的是,边距设置也适用于封面模板。此外,wkhtmltopdf 0.12似乎存在语法差异,因此它会中断

  3. 我能想到的一些解决方案:

    1. 创建2个单独的PDF并将它们连接在一起。需要找到PDF合并宝石等
    2. 通过Javascript生成持久标头。说实话,这很棘手;特别是当有桌子休息时(桌子高度超过一页)。此外,每个内容部分的标题都不同。我目前通过wkhtmltopdf javascript助手(frompagetopagepagesection等工作。
    3. 任何帮助都会很高兴。

1 个答案:

答案 0 :(得分:2)

添加--header-html设置为以下内容的脚本:

<!DOCTYPE html>
<html>
<head>
    <script>
        function subst() {
          var vars = {};
          var x    = document.location.search.substring(1).split('&');
          for (var i in x) {var z=x[i].split('=',2);vars[z[0]] = unescape(z[1]);}

          if(vars['page'] == 1) { // If page is 1, do not show the header
              document.getElementById("doc-header").style.display = 'none';
          }
       }
   </script>
</head>
<body onload="subst()">
    <div id="doc-header">
       ... your content here ...
    </div>
</body>
</html>

这应该适用于最新的wkhtmltopdf稳定版本(0.12.1) - 此示例来自crash which was fixed in this release