【问题标题】:wicked_pdf: Is it possible to have the header only show on the first page & the footer only on the last?wicked_pdf:是否可以让页眉仅显示在第一页而页脚仅显示在最后一页?
【发布时间】:2012-11-14 17:08:09
【问题描述】:

现在我有 :header => {:html => {:template => "layouts/pdf_header.html.erb"}} 进行设置。有什么我可以传递的只会在文档第一页显示标题的东西吗?

我也可以为页脚执行此操作吗?这在这里几乎更重要,因为我真的想不出任何其他方法来让页脚动态地粘在页面底部,因为它每次都会有不同的长度和不同的页面数量。

【问题讨论】:

  • 如果你没有给出标题但在第一页上写了render :partial => '/path/to/my/header'
  • @MrYoshiji 我意识到我可以做到这一点,但我希望不必在将呈现为 pdf 的每个页面上都包含页眉和页脚部分。我还将视图用于除 pdf 之外的其他内容,因此也不必在其中添加逻辑。

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


【解决方案1】:

一些快速的 javascript 可以解决这个问题。按照wkhtmltopdf上“页脚和页眉”下的样板进行操作@

这些分别是您的页眉和页脚模板。 要跟踪的关键变量是“页面”,可从 URL 哈希中获得。 您的标题将如下所示:

<div class="headerContent" style="display:none">
   ...my awesome html
    <hr />
</div>
<script type="text/javascript">
    var headerCheck = function() {
      var x=document.location.search.substring(1).split('&');
      for (var i in x) {
        if(x[i] == "page=1")
          document.getElementsByClassName("headerContent")[0].style.display = "block";
       }
     }();
</script>

类似地,对于您的页脚,代码将如下所示:

<div class="footerContent" style="display: none">
    ...awesome footer html
</div>
<script type="text/javascript">
    var footerCheck = function() {
       var x=document.location.search.substring(1).split('&');
       var currentPage = 1;
       for (var i in x) {
         var z=x[i].split('=',2);
         if(z[0] == "page")
           currentPage = unescape(z[1]);
         if(z[0] == "topage" && currentPage == unescape(z[1]))
           document.getElementsByClassName("footerContent")[0].style.display = "block";
        }
     }();
 </script>

【讨论】:

  • 这很棒,稍作修改,它可以为偶数/奇数页呈现不同的页眉/页脚:)
【解决方案2】:

渲染pdf时添加布局

format.pdf do
  render :pdf => "my_pdf",
  :layout => 'pdf
end

视图/布局/pdf.haml

%html
  %head

  %body
    = render "layouts/header"
    = yield
    = render "layouts/footer"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2013-11-18
    • 2018-12-28
    相关资源
    最近更新 更多