代码之家  ›  专栏  ›  技术社区  ›  Maykel Esser

MPDF上的大型数据表-我可以避免调整大小吗?

  •  3
  • Maykel Esser  · 技术社区  · 6 年前

    我正在生成一些关于我的管理员的报告,并使用 MPDF library . 但当这有非常大的数据量时,MPDF会调整表的大小以适应页面,因此变得很尴尬。

    enter image description here

    有什么方法可以防止这种情况发生吗?下面是我用来生成的代码。我尝试将“shrink\u tables\u to\u fit”设置为0和1,但均未成功。还尝试为每个表设置autosize=1。

    $stylesheet = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/site/css/layout/pdf.css');
    $bootstrap = file_get_contents('https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css');
    
    $mpdf = new mPDF('pt', 'a4');
    
    $mpdf->shrink_tables_to_fit = 1;
    $mpdf->setAutoTopMargin = 'stretch';
    $mpdf->setAutoBottomMargin = 'stretch';
    
    $mpdf->SetHTMLHeader('<img src="'.$_SERVER['DOCUMENT_ROOT'].'/site/img/content/pdf/header.jpg">');
    $mpdf->SetFooter('{DATE j/m/Y H:i}|{PAGENO}/{nb}');
    
    $mpdf->WriteHTML($bootstrap, 1);
    $mpdf->WriteHTML($stylesheet, 1);
    $mpdf->WriteHTML($html);
    
    $mpdf->Output($_SERVER['DOCUMENT_ROOT'].'/upload/consultas-pre/'.$nomeArquivo.'.pdf', 'F');
    
    4 回复  |  直到 6 年前
        1
  •  3
  •   Maykel Esser    6 年前

    我找到了。

    我不能有一张里面有其他桌子的桌子。发生这种情况时,MPDF在调整大小时会丢失。

        2
  •  2
  •   Shan    6 年前

    您可以将整个表拆分为不同的表,并在每个表的末尾添加:

    <div style="page-break-after: always;">&nbsp;</div>
    

    这将创建分页符。

    例子:

    <?php $rows=1; foreach($allData as $data){ ?>
    
        <table>
          <tr>
            <td>Your table data</td>
          </tr>
        </table> 
    
        <?php if($row == 10) { ?>
            <div style="page-break-after: always;">&nbsp;</div>
        <?php } ?>
    
    <?php } ?>
    

    您可以阅读有关mpdf分页符的更多信息 here

        3
  •  1
  •   n-dru    3 年前

    我也有同样的问题。尝试了我在stackoverflow上发现的各种不同组合: shrink_tables_to_fit , autosize="0" , page-break-inside:... , overflow:...

    就我而言,我的桌子在 div 那已经 position:absolute 以其内联样式。在我将其更改为相对位置或完全删除位置后,表格在页面之间正确划分。

        4
  •  0
  •   USER249    6 年前

    在表格打开标记中尝试以下操作:

    <table autosize="1">