代码之家  ›  专栏  ›  技术社区  ›  Josh Derek Li

HTML/CSS到PDF,所有页面上的背景图像

  •  6
  • Josh Derek Li  · 技术社区  · 13 年前

    我正在从用户提交的HTML/CSS生成PDF。客户要求PDF有一个背景图像,以添加一些品牌。PDF库是wkhtmltopdf11RC1。

    我可以使用PDF转换库在后台打印图像,但真正的问题是,机身的高度不能保证是纸张高度的倍数,因此最后一页通常会被剪掉,背景图像不会显示。

    PDF库确实支持javascript,但 element.offsetHeight 似乎不准确,所以我无法检查要在正文上加多少才能写满一页。

    有人有类似的经历吗?或者有人有一个聪明的想法吗?

    2 回复  |  直到 13 年前
        1
  •  1
  •   Josh Derek Li    13 年前

    不幸地 var currentBodyHeight = $('body').height(); 由于某些原因,没有准确地显示身体的高度,正如原帖子中提到的那样。我已经按照Nenotlep的建议使用了PDFtk。

    这并不太棘手,只需要确保文件被正确保存和擦除,并且我总是保留对临时文件的引用。

        2
  •  0
  •   Jonathan Tonge    13 年前

    如果插件依赖于主体的高度来做出打印决定,那么这可能会奏效。它的作用是将正文的高度设置为页面高度的倍数。你必须弄清楚纸张的高度是多少——标准是每英寸72像素。所以11.5英寸大约是841像素,但您可能需要调整余量。

    var paperHeight = 841;
    
    var currentDocHeight = $(document).height();
    
    var pages = Math.ceil(currentDocHeight / paperHeight);
    
    var newBodyHeight = pages * paperHeight;
    
    $('body').css('height', newBodyHeight);
    

    我已经使用jQuery来浓缩答案,但这一切也可以在没有jQuery的javascript中完成。

    CSS格式:

    body {
      margin:0
    }