如何在每个页面上插入折叠标记(wkhtmltopdf)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (42)

我使用wkhtmltopdf 0.12.2.1创建发票等。

我需要在pdf中的每个页面上显示折叠标记。如果内容大于一个,我怎样才能在每一页上用javascript重复它们?

这是我的基本标记

<!DOCTYPE html>
<html>
  <head>
    <title>PDF Title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body id="pdf-page">
    <div class="marks">
      <div class="mark mark-top mark-left"></div>
      <div class="mark mark-top mark-right"></div>
      <div class="mark mark-middle mark-left"></div>
      <div class="mark mark-bottom mark-left"></div>
      <div class="mark mark-bottom mark-right"></div>
    </div>
    <div id="print-area">
      <div id="letter-head"></div>
      <div id="subject-line">Subject</div>
      <div id="document-content">
        ....
        ....
        ....
      </div>
    </div>
  </body>
</html>

它看起来基本就像那个图像

提问于
用户回答回答于

好吧,这花了我好几天的时间来解决这个问题......因为互联网上缺乏示例(对于PHP / HTML / Javascript)。我们得到以下步骤:

  1. 获取文档的DPI
  2. 将元素设置为实际页面大小(视线之外)
  3. 创建包装/页面元素(你的情况.marks
  4. 确定页面的内容是否需要多个页面才能适应

注意:我这样做没有测试等,你当然需要玩。

...

<div class="marks">
    <div class="mark mark-top mark-left"></div>
    <div class="mark mark-top mark-right"></div>
    <div class="mark mark-middle mark-left"></div>
    <div class="mark mark-bottom mark-left"></div>
    <div class="mark mark-bottom mark-right"></div>
</div>

...

<script>
    // some static stuff found it somewhere on the internet
    var PDF = {
        width: 8.27, // inches, 210mm
        height: 11.65, // inches, 296mm
        margins: {
            top: 1.97, left: 0.34,
            right: 0.393700787, bottom: 0.393700787
        }
    };

    $(document).ready(function() {
        // get page sizes by creating 'shadow' element
        var pageSize = $('<div></div>')
            .css({
                height: PDF.height +'in', width: PDF.width +'in',
                top: '-100%', left: '-100%',
                position: 'absolute',
            })
            .appendTo('body');

        // set debug element
        $('.debug').html(pageSize.height());

        // set every page elements .marks to proper height
        // dont forget the substract the header and footer height
        $('.marks').height(pageSize.height() - footerHeight - headerHeight);

        // @TODO: duplicate .marks to times a pages is created, and !!maybe!! set the top of .marks with pageSize.height()
    });
</script>

这对我来说很成功,因为我有固定的高度元素,需要在页面上重复它(与我的.wrapper榆树相同.marks,它们是'相对'元素)。通过这种方式,我可以通过.marks在案例中关闭来确定何时“打开”新页面。

扫码关注云+社区