wkhtmltopdf:在页脚上显示内容,例如页码

时间:2017-01-05 18:58:54

标签: wkhtmltopdf html-to-pdf

我希望这个命令在生成的pdf的bootom中显示java.lang.RuntimeException: Unable to start activity ComponentInfo{com.abc.zzz/com.abc.zzz.Profile}: java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to com.abc.zzz.HeaderView,但是没有......任何想法?

1/1

版本:Linux上的0.12.2.4

2 个答案:

答案 0 :(得分:4)

我认为此问题可能是由于版本0.12.2.4,否则,此--footer-center [page]/[topage]命令将执行您的工作。

又一个例子我检查了在body onload中调用了substitutePdfVariables()

<!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>

此处Docs您可以找到有关页眉和页脚的更多变量。

答案 1 :(得分:0)

似乎是一个稳定性问题,但0.12.2.4linuxdebian)的版本ubuntu尚未稳定发布,但仅适用于在他们的存储库here中提到的调试目的。

以下是version0.12.4

的工作屏幕截图

版本0.12.4 foobar1

或者您可以通过以下代码段添加页码来添加页脚,如上所述here

  <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>