Wkhtmltopdf: show content on footer, e.g. page number

I expected this command to show the 1/1generated PDF in the boot file, but ... no idea?

wkhtmltopdf --footer-center [page]/[topage] www.google.com /tmp/foobar.pdf

Version: 0.12.2.4 on Linux

+4
source share
2 answers

I think this problem may be caused by version 0.12.2.4, otherwise this command --footer-center [page]/[topage]will do your job.

another example, I checked what substitutePdfVariables()is called in bodyload.

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <script>
        function substitutePdfVariables() {

            function getParameterByName(name) {
                var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
                return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
            }

            function substitute(name) {
                var value = getParameterByName(name);
                var elements = document.getElementsByClassName(name);

                for (var i = 0; elements && i < elements.length; i++) {
                    elements[i].textContent = value;
                }
            }

            ['frompage', 'topage', 'page', 'webpage', 'section', 'subsection', 'subsubsection']
                .forEach(function(param) {
                    substitute(param);
                });
        }
    </script>
</head>
<body onload="substitutePdfVariables()">
    <p>Page <span class="page"></span> of <span class="topage"></span></p>
</body>
</html>

Here Documents you can find out more variables about the header and footer.

+4
source

, 0.12.2.4 linux (debian ubuntu), , .

version 0.12.4

0.12.4 foobar1

, ,

  <html><head><script>
  function subst() {
    var vars={};
    var x=window.location.search.substring(1).split('&');
    for (var i in x) {var z=x[i].split('=',2);vars[z[0]] = unescape(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 style="border:0; margin: 0;" onload="subst()">
  <table style="border-bottom: 1px solid black; width: 100%">
    <tr>
      <td class="section"></td>
      <td style="text-align:right">
        Page <span class="page"></span> of <span class="topage"></span>
      </td>
    </tr>
  </table>
  </body></html>
0

Source: https://habr.com/ru/post/1665920/


All Articles