首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用javascript- Chrome、Firefox、IE9及以上版本打印页面时出现的问题

使用javascript- Chrome、Firefox、IE9及以上版本打印页面时出现的问题
EN

Stack Overflow用户
提问于 2014-10-23 07:19:04
回答 3查看 3.8K关注 0票数 4

我有一个使用window.print()打印html表的应用程序,当我点击打印超链接时,这个应用程序运行良好,我面临的问题是页面拆分,我已经浏览并找到了许多解决方案,其中大多数使用css来解决问题,但是当我尝试css时,如下所示,它不起作用。我在中模拟了一个示例演示,以展示这个问题。

测试它的铬,以便人们可以看到预览和使用页面大小作为A4,以查看分页。

JSFiddle

代码语言:javascript
复制
@media print {
    body * {
        visibility: hidden;
    }
    div {
        page-break-inside: avoid;
    }
    table {
        page-break-after: always;
        page-break-inside: auto;
    }
    tr {
        page-break-inside: avoid;
        page-break-after: auto;
    }
    td {
        page-break-inside: avoid;
        page-break-after: auto;
    }
    thead {
        display: table-header-group;
    }
    tfoot {
        display: table-footer-group;
    }

    #printSection * {
        visibility: visible;
    }
    #printSection {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        margin: 0 auto;
        width: 100%;
    }
}
EN

回答 3

Stack Overflow用户

发布于 2014-10-23 09:23:32

,试试这个小提琴,

jsfiddle.net/w2p5kbcj/14

CSS

代码语言:javascript
复制
@media screen {
    #printSection {
        display: none;
    }
}
@media print {
    table {
        page-break-after: auto;
        page-break-inside: auto;
        width:100%;
        border-width: 1px solid #000;
        font-size:16px;
        font-family:Arial;
    }

     td{
        padding:2px 5px 2px 5px;
    }

}

引用旧堆栈溢出线程

打印大型HTML表时如何处理分页符

Javascript用于此目的

tableSplitHack.js

只需将js添加到代码中,并将类“splitForPrint”添加到表中,就可以将表整齐地拆分成多个页面,并将表头添加到每个页面。

票数 1
EN

Stack Overflow用户

发布于 2014-10-28 15:03:56

代码语言:javascript
复制
@media print {
  .page-break  { display: none; page-break-before: avoid; }
}

这将确保打印机永远不会看到分页。

代码语言:javascript
复制
<div class="page-break"></div>
票数 1
EN

Stack Overflow用户

发布于 2014-11-02 23:30:52

我也有过同样的问题。唯一起作用的就是用div来改变div

因此,您可以使用div > div > div而不是table > tr > td,并使用css显示表,如下所示:

代码语言:javascript
复制
div(style: display: table;)
    > div(style: display: table-row;)
        > div(style: display: table-cell;)

更新

并非所有浏览器都支持这样的属性:page-break-after: always;。就连Chrome也忽略了这一点。所以,如果它对你有用的话,试试这个布局。

更新2

即使它对您不起作用(不管怎样,我记得它起了作用),使用这个布局,您也可以在media print中轻松地使用它,就像这样:

代码语言:javascript
复制
@media print {
    div > div {
        display: block;

        > div {
              display: inline-block;
        }
    }
}

您可以用.table类更改第一个div,然后继续。参见示例:https://github.com/nikoloza/Scratch/blob/master/scratch/less/core/classes.less#L83

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26523052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档