【问题标题】:Print html pages with page-break使用分页符打印 html 页面
【发布时间】:2017-01-11 10:33:55
【问题描述】:

我有用于创建表并打印的数据。结构如下:

标题 数据 总和

打印时标题不能在页尾,Sum 不能在页首。这就是为什么我用 Divs 制作 html 表格并用 mm 给出所有尺寸的原因。但我无法在打破页面时进行计算。 couse in不同的电脑高度变化。

这是我用于计算和中断页面的 javascript 代码

$(document).ready(function(){
        var mydiv ='<div class="page-break"></div>';
        var i=0;
        var h = px2cm($("#myinfo").last().height())*10;
        var limit=297;
        var g =0;

        $('#content div.ptr').each(function(){
            g=0;
            h = h + px2cm($(this).height())*10;
            var nexth=px2cm($(this).next().height())*10;
            if(h>=limit-nexth)
            {               
                if($(this).hasClass("ptrtitle")){
                    $(this).before(mydiv);
                    h = px2cm($(this).height())*10;
                    i++;
                    g=1;
                }else{                  
                    if(String($(this).next().attr("class"))==="ptr ptrsum"){
                        if($(this).prev().hasClass("ptrtitle"))
                        {
                            $(this).prev().before(mydiv);
                            h = px2cm($(this).height()+$(this).prev().height())*10;
                        }else{
                            $(this).before(mydiv);
                            h = px2cm($(this).height())*10;
                        }
                        //h=0;
                        i++;
                        g=1;
                    }else{
                            $(this).after(mydiv);
                            h=0;i++;
                    }
                }
            }
        });
    });
    function px2cm(px) {
      var d = $("<div/>").css({ position: 'absolute', top : '-1000cm', left : '-1000cm', height : '1000cm', width : '1000cm' }).appendTo('body');
      var px_per_cm = d.height() / 1000;
      d.remove();
      return px / px_per_cm;
    }

在这里我添加限制=297(对于 A4 高度,它在某些计算机上运行良好,但在其他计算机上运行良好)。效果不好意味着,在第一台计算机上,它在一页打印 40 行,但在另一台计算机上,一些行转到下一个打印页

如何在所有电脑上正常打印数据

【问题讨论】:

  • 你看过 CSS 属性 page-break-inside 吗?也许您可以将其添加到 div 并将其设置为“避免”。
  • 是的,但我不工作
  • 如果您在 jsfiddle 或类似文件中创建了一个简单的标记演示,我们可能会更容易提供帮助。
  • 我无法理解,在这个例子中我设置了一个 257(297-40(margin)) mm 高度宽度的 div,它必须占据整个页面,但它占据了它的一部分 jsfiddle link

标签: javascript html css printing


【解决方案1】:

尝试使用@media print 为您的班级page-break 添加css2 属性page-break,而不是手动计算分页符。如果需要,也可以针对print 使用不同的比例。

@media print {
    .page-break {page-break-after: always;}
}

【讨论】:

  • 我已经添加了这个类。问题是在标题之后和总和行之前 div 不能中断,并且 page-break-after: Avoid doesnt work work divs
猜你喜欢
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
相关资源
最近更新 更多