【问题标题】:HTML2PDF Table content is overflowing out of pageHTML2PDF 表格内容溢出页面
【发布时间】:2016-06-18 01:19:07
【问题描述】:

我正在使用 HTML2PDF 库,但在尝试输出我的 pdf 时遇到了问题。实际上,我的表格总是被截断,无法显示我的表格的全部内容而没有它被切割。 我定义了 css 样式,但它似乎必须生效。此外,如果我没有在 echo 语句表边框 =“1px”上定义到我的 php 脚本中,它不会采用之前定义的样式 css。

这是我的代码:

<!DOCTYPE html>
<html>
<head>
<title>Test PDF</test>
<style>
table{width:100%; border-collapse:collapse; table-layout:auto; vertical-align:top; margin-bottom:15px; border:1px solid #CCCCCC;}
table thead th{font-size: 2px; color:#FFFFFF; background-color:#666666; border:1px solid #CCCCCC; border-collapse:collapse; text-align:center; table-layout:auto; vertical-align:middle;}
table tbody td{vertical-align:top; border-collapse:collapse; border-left:1px solid #CCCCCC; border-right:1px solid #CCCCCC; font-size: 2px;}
table thead th, table tbody td{padding:5px; border-collapse:collapse;}
table tbody tr.light{color:#979797; background-color:#F7F7F7;}
table tbody tr.dark{color:#979797; background-color:#E8E8E8;}
</style>
</head>
<body>
<html>
<?php
require_once "config.php";

//Start html2pdpf session
ob_start();
//Get tablename
$tablename=$_POST["tablename"];
$ShowPivotTableResult='SELECT * FROM '.$tablename.'';
    $resultLeast=mysqli_query($conn,$ShowPivotTableResult) or die(mysqli_error($conn));
if (!$resultLeast) {
    die("Query to show fields from table failed");
    }
//Display Pivot Table content - script
$fields_num = mysqli_num_fields($resultLeast);
    echo "<table border='1px' CELLSPACING='0' cellpadding='2'><thead><tr>";
    // printing table headers
for($i=0; $i<$fields_num; $i++)
{
    $field = mysqli_fetch_fields($resultLeast);
    echo '<th>'.$field[$i]->name.'</th>';
}
echo "</tr></thead><tbody>\n";
// printing table rows
while($rowLEAST = mysqli_fetch_row($resultLeast))
{
    echo "<tr>";
    // $row is array... foreach( .. ) puts every element
    // of $row to $cell variable
    foreach($rowLEAST as $cellPIVOT)
    echo "<td>$cellPIVOT</td>";
    echo "</tr>\n";
    }
    echo '</tbody></table><br/><br/>';

$content = ob_get_clean();

    // convert
    require_once('html2pdf.class.php');
    try
    {
        $html2pdf = new HTML2PDF('L', 'A4', 'fr', true, 'UTF-8', 0);
        $html2pdf->pdf->SetDisplayMode('fullpage');
        $html2pdf->writeHTML($content, isset($_GET['vuehtml']));
        ob_end_clean();
        $html2pdf->Output(''.$tablename.'.pdf');
    }
    catch(HTML2PDF_exception $e) {
        echo $e;
        exit;
    }

mysqli_close($conn);
?>
</body>
</html>

【问题讨论】:

    标签: php css pdf html2pdf


    【解决方案1】:

    尝试在表格宽度上使用绝对长度,例如 pt。 A4 的宽度为 595pt。 关于css属性,尽量用class代替tag。 示例:

    HTML

    <style>
        .tbl{
         width: 595pt;
         border: 1px solid #000;
        }
    </style>
    

    PHP

    echo "<table class='tbl' CELLSPACING='0' cellpadding='2'><thead><tr>";
    

    【讨论】:

    • 嗨@rmondesilva,感谢您的帮助。您的解决方案适用于表格边框。但是我的表格在我的 A4 pdf 上仍然被截断。我试图在横向模式下适应 $html2pdf = new HTML2PDF('L', 'A4', 'fr', true, 'UTF-8', 0);.tbl{ width: 842pt;} 但我的表格内容溢出页面
    • 不客气,我很高兴它有效。在您的另一个问题中,您是否尝试在表格单元格/标题上使用 CSS 属性 white-space: nowrap;?并尝试使用word-wrap: break-word;word-break: break-all;。将table-layout: fixed; 放在表格上并为表格标题/单元格设置固定/绝对长度。您的问题的可能原因是您的内容,因此请尝试这些解决方案。
    【解决方案2】:

    如果您以百分比指定表格单元格宽度,请尝试将其删除并使用样式属性控制宽度。宽度应以毫米为单位,与页面宽度成比例。

    例如如果您的页面是 A4 - 595.276 宽的纵向。表格单元格的 50% 宽度将在样式属性中采用 (595.276/2)-margins 宽度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      相关资源
      最近更新 更多