DOMPDF生成pdf非常慢

时间:2017-06-21 00:09:16

标签: php html pdf dompdf

我正在尝试使用非常简单的HTML生成PDF。但是,它包含5张图像(总共不到50KB)。

生成PDF非常慢。生成PDF需要12秒钟。我使用XAMPP在Windows 10(i5-4590)上运行。

以下是我的代码:

<?php
require_once 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
$dompdf = new DOMPDF();

$html = <<<EOD
<html>
    <head>
        <style type="text/css">
        html {
            margin: 1%;
            padding: 0;
        }
        .header,
        .footer {
            width: 100%;
            text-align: center;
            position: fixed;
            font-size: 26px;
        }
        .header {
            top: 0px;
        }
        .footer {
            bottom: 18px;
        }
        .center {
            margin: 0 auto;
        }
        .divTable{
            display: table;
            width: 100px;
            text-align: center;
            margin: 0 auto;
        }
        .divTableRow {
            display: table-row;
        }
        .divTableHeading {
            margin: 0 auto;
        }
        .divTableCell, .divTableHead {
            display: table-cell;
            padding: 0 33px;
        }
        .bottom .divTableCell {
            padding-top: 30px;
        }
        .divTableHeading {
            display: table-header-group;
            font-weight: bold;
        }
        .divTableFoot {
            display: table-footer-group;
            font-weight: bold;
        }
        .divTableBody {
            display: table-row-group;
        }
        div.img-border img {
            border-style: solid solid solid solid;
            border-width: 2px 2px 2px 2px;
            border-color: #eb0089;
        }
        </style>
    </head>
    <body>
        <div class="center">
            <div class="divTable top">
                <div class="divTableBody">
                    <div class="divTableRow">
                        <div class="divTableCell" style="padding-left:0px;"><div class="img-border"><img src="300-small.png"></div></div>
                        <div class="divTableCell"><div class="img-border"><img src="300-small.png"></div></div>
                        <div class="divTableCell" style="padding-right:0px;"><div class="img-border"><img src="300-small.png"></div></div>
                    </div>
                </div>
            </div>
            <div class="divTable bottom">
                <div class="divTableBody">
                    <div class="divTableRow">
                        <div class="divTableCell" style="padding-left:0px;"><div class="img-border"><img src="300-large.png"></div></div>
                        <div class="divTableCell" style="padding-right:0px;"><div class="img-border"><img src="300-large.png"></div></div>
                    </div>
                </div>
            </div>
        </div>
        <div class="footer">
            $customer_title - $customer_order_number
        </div>
    </body>
</html>
EOD;

$dompdf->set_option( 'dpi' , '300' );
$dompdf->load_html($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream("sample.pdf", array("Attachment"=>0));

我无法理解如何让它更快地进行处理。

2 个答案:

答案 0 :(得分:0)

在第一个表格行的第三个DIV中,您忘记了install_requires属性的结束语:

class

应该是

<div class="divTableCell style="padding-right:0px;">

在第二行的第二个DIV中再次出现同样的错误。

答案 1 :(得分:0)

由于图像,我也有pdf下载加载问题。

必须将图像转换为base64,然后将base64字符串放入img src属性

例如<img src="data:image/png;base64,'.$base64String.'" />