1

所以我在每个页面上都有一个我想要的标题,看起来像这样 Pdf 报告标题,我希望页码出现在用户名显示 [page] 的位置。这是我到目前为止所拥有的,但它不起作用:

在我的控制器中:

render  pdf: "report",
        page_size: "Letter",
        layout: "pdf",
        template: "/results/report",
        footer: { 
            spacing: -265,
            html: { template: '/layouts/_report_header.html'} 
        },
        header: { 
            spacing: 3,
            html: { template: '/layouts/_page_header.html' }
        },
        margin: { 
            top: 20,
            bottom: 5 
        }

在我的 /layouts/_page_header.html.erb

<html>
  <head>
    <% user_id = session[:user_id] %>
    <% user = User.find(user_id) %>
    <script>
      function number_pages() {
        var vars={};
        var x=document.location.search.substring(1).split('&');
        for(var i in x) {var z=x[i].split('=',2);vars[z[0]] = decodeURIComponent(z[1]);}
        var x=['frompage','topage','page','webpage','section','subsection','subsubsection'];
        for(var i in x) {
          var y = document.getElementsByClassName(x[i]);
          for(var j=0; j<y.length; ++j) y[j].textContent = vars[x[i]];
        }
      }
    </script>
  </head>
  <body onload="number_pages()">
    <div class="page_header inline">
          <h3 class="margin_none font_roboto">Nutrient Tracking Tool - Report</h3>
      </div>
      <div class="right font_roboto">
          <strong>User:</strong> <%= user.name %> | <span class="page">[page]</span></br>
      </div>
      <div>
          <hr class="line_break" color="dodgerblue">
      </div>
  </body>
</html>

根据github上的文档

上面“var x”中列出的任何类都将在渲染时自动填充。

这应该会导致span类页面显示当前页码,但事实并非如此。我怎样才能解决这个问题?

更新:我认为提到添加{ center: '[page] of [topage]' }到页脚的页眉会导致页码正确显示可能也很重要:

页码显示

4

1 回答 1

0

您的标记和 JavaScript 对我来说工作正常。

作为示例,我已将此问题添加到Wicked PDF 问题项目并在此处部署。

PDF版本在这里

这种最小复制存在一些填充问题,但您可以看到页码按预期工作。

wkhtmltopdf您使用的是什么版本,在什么平台上?如果可能,请尝试升级或将其关闭。

尝试使用以下wkhtmltopdf选项:--enable-javascript、、、javascript-delay--no-stop-slow-scripts

于 2016-07-12T18:19:16.267 回答