PHP打印表的预览问题

时间:2014-12-30 12:12:57

标签: php html mysql css report

我正在从Mysql DB生成一个php报告。我在此报告中显示的所有内容都是从数据库中提取的。

我在打印预览中遇到的问题

  1. 如果表格3展开,则table4分为两半并位于下一页 2.如果我使用table-header-group;作为表5,表1和表1的标题。表3,它在浏览器中不起作用。
  2. 我需要的解决方案

    1.如果table3行增加,如果表4触及下面的行(div border),它应该完全移动到打印预览中的下一页。

    2.如果table4转到下一页,它应该低于table1& 2.

    需要帮助!

    Report Sample Image

    我的代码:

        @media print {
            #container
            {
            border:1px solid;
            }
            table
            {
            border-left: 1px solid #ccc;
            border-top: 1px solid #ccc;
            border-bottom: 1px solid #ccc;
            border-right: 1px solid #ccc;
    
            border-spacing:0;
            border-collapse: collapse; 
    
            }
    
            table td 
            {
            border-right: 1px solid #ccc;
            border-bottom: 1px solid #ccc;
            padding: 1mm;
            }
    
            table.heading
            {
            height:50mm;
            }
    
            #table_table3, #table_table4
            {   
            font-size: 9pt;
        line-height: 7px;font-size: 9pt;
    page-break-before: always;
            }
            #table_table3 table , #table_table4 table
            {
            width:100%;
            border-left: 1px solid #ccc;
            border-top: 1px solid #ccc;
            font-size: 9pt
            border-spacing: 0;
            border-collapse: collapse; 
        page-break-before: always;
            //margin-top:5mm;
            }
    
            #table_table3 table td , #table_table4 table td
            {
            text-align:center;
            font-size:9pt;
            border-right: 1px solid #ccc;
            border-bottom: 1px solid #ccc;
            padding:1mm 0;
    page-break-before: always;
            }
        }
    

1 个答案:

答案 0 :(得分:0)

您需要在CSS中添加一些@media print规则,以便获得适合打印机的风格。

例如:

防止在页面底部打印标题

h2, h3 {
   page-break-after: avoid;
}

阻止列表拆分或图像内拆分

ul, img {
   page-break-inside: avoid;
}

在表格和文章

之前始终分页
table, article {
   page-break-before: always;
}

特定表格之前的分页符:

table#table-4 {
   page-break-before: always;
}

<table id="table-4">...</table>

在某些浏览器中,这有效:

table { page-break-inside:auto }
tr    { page-break-inside:avoid; page-break-after:auto }
thead { display:table-header-group }
tfoot { display:table-footer-group }

参考:

警告。严重的浏览器不兼容性。

似乎大多数浏览器都不关心page-break- *规则..

看起来,Opera是唯一一个支持这个......

规格为http://www.w3.org/TR/CSS2/page.html