WkhtmlToPDF全局javascript变量。访问页脚中的数据

时间:2019-02-26 15:51:58

标签: javascript wkhtmltopdf

我必须创建1个包含多个文档的PDF,如下所示:

  • Doc1(TypeA)
  • Doc2(TypeB)
  • Doc3(TypeB)
  • Doc4(TypeC)
  • Doc5(TypeC)

在每个页脚上,我都需要以下信息:

  1. 页数/总页数(由page的{​​{1}}和topage提供
  2. 页数/单个文档的总页数
  3. 文件编号/相同类型的文件

1。window.location.search

提供

3。。在将html发送到wkhtml之前,我可以在windows.location.search中设置此数字。这将在<h1></h1>window.location.serach下的section中可用

2。。这很有趣。如果我能够在页脚javascript中存储信息,那将很容易。每次更改部分或子部分时,我都可以重置的内部计数器之类的东西。

所以问题是:如何存储页脚之间共享的变量?还有其他方法可以满足我的需求吗?

每个PDF页面的页脚:

  • Doc1(TypeA):pdf页1/7 |文档第1/2页|类型1/1
  • Doc1(TypeA):pdf页2/7 |文档页2/2 |类型1/1
  • Doc2(TypeB):pdf页3/7 |文档页1/1 |输入1/2
  • Doc3(TypeB):pdf页4/7 |文档第1/2页|类型2/2
  • Doc3(TypeB):pdf页5/7 |文档页2/2 |类型2/2
  • Doc4(TypeC):pdf页6/7 |文档页1/1 |输入1/2
  • Doc5(TypeC):pdf页7/7 |文档页1/1 |类型2/2

这几乎就像创建5个PDF并将它们合并为一个。

1 个答案:

答案 0 :(得分:1)

您可以使用JS cookies重设每个部分的编号。请遵循以下示例:https://github.com/wkhtmltopdf/wkhtmltopdf/issues/3708#issuecomment-346701655

<html>
  <head>
    <script>
      function setSectionCounter() {
        var vars = {};
        var queryStringsFromUrl = document.location.search.substring(1).split('&');
        for (var queryString in queryStringsFromUrl) {
            if (queryStringsFromUrl.hasOwnProperty(queryString)) {
                var temp = queryStringsFromUrl[queryString].split('=', 2);
                vars[temp[0]] = decodeURI(temp[1]);
            }
        }

        var element = document.getElementById('sectionCounter');

        if (document.cookie.split(';').length === 2) {
          var section = document.cookie.split(';')[0].split('=')[1];

          if (vars.section !== section) {
            document.cookie = 'currentSection=' + vars.section;
            document.cookie = 'startedAt=' + vars.page;
          }

          // startedAt is the page on which a section started
          var startedAt = parseInt(document.cookie.split(';')[1].split('=')[1]);
          element.textContent = vars.page - startedAt + 1;
        } else {
          document.cookie = 'currentSection=' + vars.section;
          document.cookie = 'startedAt=' + vars.page;
          element.textContent = 1;
        }
      }
    </script>
  </head>
  <body onload="setSectionCounter()">
    <p id="sectionCounter"></p>
  </body>
</html>

免责声明:此解决方案不适用于每节的总页数,它仅提供一个计数器。

希望有帮助。

相关问题