【问题标题】:WickedPDF different margin settings for first page?WickedPDF 第一页的边距设置不同?
【发布时间】:2014-11-19 06:19:11
【问题描述】:

使用:

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 似乎存在语法差异,因此会中断

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

  1. 创建 2 个单独的 PDF 并将它们连接在一起。需要找PDF合并gem等。
  2. 通过 Javascript 生成持久标头。老实说,这很棘手。特别是当有表格中断时(表格高度超过一页)。此外,每个内容部分的标题都不同。我目前通过 wkhtmltopdf javascript 助手(frompage、topage、page、section 等)进行这项工作

任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    添加一个将--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。

    【讨论】:

    • 这帮助我隐藏了 PDF 中的标题
    猜你喜欢
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    相关资源
    最近更新 更多