-->

WKHTMLTOPDF:如何禁用第一页页眉(WKHTMLTOPDF: How to disable

2019-07-30 23:16发布

wkhtml doesn't重复表格元素“TH”每一页上都像它应该。 所以我想这可能是可以简单地使用--header-HTML选项,手动添加表头这样。 但我不希望他们在第一页上,因为有表头不已,再加上一些其他的第一页的东西...我发现了一些JS的解决方案,但其对我来说太复杂了,因为我知道,只是非常基本的JS ...任何想法?

Answer 1:

你尝试了JS的解决方案? 这其实没有那么复杂。 我只是做了与包含在被分裂成许多不同的页表长的html文件测试,我设法用这个头文件,从第1页和第3删除标题:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <script>
        function subst() {
          var vars={};
          var x=document.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]];

            if(vars['page'] == 1){ // If page is 1, set FakeHeaders display to none
               document.getElementById("FakeHeaders").style.display = 'none';
            }

            if(vars['page'] == 3) { // If page is 3, set FakeHeaders display to none
                document.getElementById("FakeHeaders").style.display = 'none';
            }
          }
        }
        </script>
    </head>
    <body style="border:0;margin:0;" onload="subst()">
        <table style="border-bottom: 1px solid pink; width: 100%; margin-bottom:5px;" id="FakeHeaders">
          <tr>
            <th>Your awesome table column header 1</th>
            <th>Column 2</th>
            <th style="text-align:right">
                Page <span class="page"></span>/<span class="topage"></span>
            </th>
          </tr>
        </table>
    </body>
</html>

他们的关键点,不存在该表“报头”被包含在具有ID“FakeHeaders”的表。 javascript函数SUBST()当主体被加载运行和功能期间它检查如果当前页面是1,或者如果当前页面是3,并且如果是,则FakeHeaders设置不可见。 您将需要与利润率和CSS发挥让它看起来像你想但这应该工作。

这是一个已知的问题wkhtmltopdf,最有可能它不会很快被固定的任何时候,看到的问题566在问题追踪器 。 我看到的JavaScript选项是唯一可用的解决方法,但你可以尝试玩弄的div或手动分割表,如果你输入HTML,样式和页面大小/利润率是非常明确 - 但被警告,这将是真的很烦人。



Answer 2:

如果你可以单独拆分的第一页作为一个独立的HTML,您可以通过在WKHTMLTOPDF使用“盖”做到这一点。

PDFKit.new(url, :header_html => header_url, :cover => cover_url).


Answer 3:

我面临的是我使用过类似的问题WKHTMLTOPDF页眉/页脚,我想从封面删除它们。 问题是,页眉/页脚的最大高度仍然出现在所有页面,包括封面。

可以在点击我的头脑和化险为夷的解决方案是我生成了两个WKHTMLTOPDF文件,一个对所有页面的页眉/页脚和另一个没有任何页眉/页脚。 然后我拿起封面从WKHTMLTOPDF生成的文件没有页眉/页脚和其他页面的其余WKHTMLTOPDF产生对所有页面的页眉/页脚文件。 我用PDF Merger库在PHP合并两个选择的页面WKHTMLTOPDF产生的“PDF”文件生成一个PDF页面上的其余部分与封面和页眉/页脚文件。



Answer 4:

<script type="text/javascript"> 
    var pdfInfo = {};
    var x = document.location.search.substring(1).split('&');

    for (var i in x) { var z = x[i].split('=',2); pdfInfo[z[0]] = unescape(z[1]); }

    function getPdfInfo() {
        var page = pdfInfo.page || 1;

        if(page != 1) {
            document.getElementById('pHeader').style.display = 'none';
        }
    }
    getPdfInfo();
</script>


Answer 5:

出于某种原因,Nenotlep的回答并没有为我工作。 它只能除去页码..

所以,我创建了一个显示类:无; 而简单地添加它。 它的工作这种方式。

 function pagination() { var vars = {}; var x = document.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]]; if (vars['page'] == 1) { var element = document.getElementById("pager"); element.classList.add("pager-hidden"); } } } 
 .pager { font-size: 0.09375in; padding-right: 1.00003in; text-align: right; letter-spacing: 0.01042in; padding-bottom: 0.37501in; } .pager.pager-hidden { display: none; } 
 <body onload="pagination()"> <div class="pager" id="pager"> <div class="pager-pages">Page <span class="page"></span> / <span class="topage"></span></div> </div> </body> 



文章来源: WKHTMLTOPDF: How to disable header on the first page