首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WkhtmlToPDF全局javascript变量。访问页脚中的数据

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

Stack Overflow用户
提问于 2019-02-26 23:51:58
回答 1查看 467关注 0票数 1

我必须创建一个包含多个文档的PDF,这些文档像这样分组:

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

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

  1. 页数/总页数(由pagetopagewindow.location.search
  2. page提供)页数/单个document
  3. document页数/相同类型的

文档的总页数

1.windows.location.search提供

3.在将htmls发送到wkhtml之前,我可以在<h1></h1>中设置这个数字。这将在sectionsubsection下的window.location.serach中可用

2.这是有趣的部分。如果我能够将信息存储在footer 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页

<代码>H145文档3 (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并将它们合并为一个。

EN

回答 1

Stack Overflow用户

发布于 2019-03-20 04:21:57

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

代码语言:javascript
复制
<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>

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

希望能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54889379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档