是否可以使用 CSS 更好地打印页面? [复制]

Posted

技术标签:

【中文标题】是否可以使用 CSS 更好地打印页面? [复制]【英文标题】:Is it possible to use CSS to print pages better? [duplicate] 【发布时间】:2013-11-17 22:25:35 【问题描述】:

我有一个非常简单的 html 页面,它只有一个垂直表格,可以将数据动态生成到其中。我遇到的问题是,当我想打印我的页面时,它会在我的 <tr> 之一中途切断,如下所示:

有没有办法使用 CSS,所以我可以以某种方式在页面底部结束 <tr>,然后在第二页开始下一个 <tr>

我在网上搜索了解决方案,但一无所获。对于我所追求的东西,要清楚地搜索它并不容易。

希望有人可以帮助解决这个问题。

【问题讨论】:

coding.smashingmagazine.com/2011/11/24/… 【参考方案1】:

这是一个更可靠的 JQuery 解决方案:

$(document).ready(function () 
    $('table.splitForPrint').each(function(i, tabela)
        var per_page = 13;

        var pages = Math.ceil($('tbody tr').length / per_page);

        if (pages == 1)
            return;

        var ultimo = $(tabela);
        for(var p = 1; p <= pages; p++) 
            var copy = ultimo.clone();

            $('tbody tr', ultimo).each(function(i, tr)
                if (i >= per_page) 
                    $(tr).remove();
                
            );

            $('tbody tr', copy).each(function(i, tr)
                if (i < per_page) 
                    $(tr).remove();
                
            );

            if (p < pages)
                copy.insertAfter(ultimo);

            copy.css('page-break-before', 'always');

            ultimo = copy;
        
    );
);

https://code.google.com/p/wkhtmltopdf/issues/detail?id=168#c4

【讨论】:

【参考方案2】:

使用类似的东西

tr 
    page-break-inside: avoid;

【讨论】:

...许多浏览器不支持。 @MrLister 你有这方面的文件吗?我找不到太多一致的文档,但从我读到的所有现代浏览器都支持它。我发现的唯一关于缺乏支持的抱怨可以追溯到 2010 年或更早。 @ExplosionPills 似乎没有做任何事情。我在 Chrome 30 上。 official W3C documentation 仍然说浏览器必须遵守根中块级元素的这些规则,但“也可以将这些属性应用于其他元素,例如,'table-row' 元素。”所以他们没有必须让它在表格行上工作以符合要求。在我的机器上,Chromium 和 Konqueror 没有。 一段(甚至一个句子)或两段解释对于将可能的正确答案变成一个很好的答案大有帮助。

以上是关于是否可以使用 CSS 更好地打印页面? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

应用CSS的page-break-after属性 实现WEB页面强制分页打印

是否有一个简单的 html 代码可以在内容最少的页面底部添加页脚? (不使用 CSS)

CSS 打印

如何在下一页打印PDF后拆分表格行并删除标题内容颜色?

当使用 CSS 找不到图像时,是不是可以为每页定义一个全局“断开链接”图像? [复制]

是否有任何有效的 CSS 方法来打印页面计数?