使用HTML2PDF和MySQL创建PDF


Create PDF with HTML2PDF and MySQL

我在使用HTML2PDF Librairy创建PDF和MySQL时遇到问题。我想显示一个图像,但不显示。有人知道怎么做吗?

例如:我有下面的代码:

bookmark.php

<?php
ob_start();
?>
<style type="text/css">
<!--
    table.page_header {width: 100%; border: none; background-color: #DDDDFF; border-bottom: solid 1mm #AAAADD; padding: 2mm }
    table.page_footer {width: 100%; border: none; background-color: #DDDDFF; border-top: solid 1mm #AAAADD; padding: 2mm}
    h1 {color: #000033}
    h2 {color: #000055}
    h3 {color: #000077}
    div.niveau
    {
        padding-left: 5mm;
    }
-->
</style>
<page backtop="14mm" backbottom="14mm" backleft="10mm" backright="10mm" style="font-size: 12pt">
    <page_header>
        <table class="page_header">
            <tr>
                <td style="width: 100%; text-align: left">
                    <img src=showimage.php alt="image" />
                </td>
            </tr>
        </table>
    </page_header>
    <page_footer>
        <table class="page_footer">
            <tr>
                <td style="width: 100%; text-align: right">
                    page [[page_cu]]/[[page_nb]]
                </td>
            </tr>
        </table>
    </page_footer>
</page>
<?php
    $content = ob_get_clean();
    require_once(dirname(__FILE__).'/../html2pdf.class.php');
    try
    {
        $html2pdf = new HTML2PDF('P', 'A4', 'en', true, 'UTF-8', 0);
        $html2pdf->writeHTML($content, isset($_GET['vuehtml']));
        $html2pdf->Output('bookmark.pdf');
    }
    catch(HTML2PDF_exception $e) {
        echo $e;
        exit;
    }
?>

showimage.php

<?php
mysql_connect("localhost","user","pass");
mysql_select_db("db");
$rs = mysql_query("select * from gallery");
$row = mysql_fetch_assoc($rs);
$imagebytes = $row[imgdata];
header("Content-type: image/jpeg");
print $imagebytes;
?>

这是旧的,但由于没有提供正确的答案,我会尽量缩小。Html2pdf可以直接从磁盘加载图像,而不使用http。在当前版本中,您会收到一个错误,说它无法加载图像。。。

链接图像的常用方法是:

<img src='/path/to/image.png' alt="image" />

而不是:

<img src=showimage.php alt="image" />

在您的情况下,如果您不想在磁盘上写入图像,您可以尝试将其嵌入为数据uri(我还没有测试html2pdf是否支持此功能)

echo '<img src="data:image/jpeg;base64,'.base64_encode($row[imgdata]).'"/>';

我想知道您是否收到错误消息。也许这是一个让PHP在错误/警告报告方面更加详细的想法。

请参阅error_reporting@php.net.php.ini中还设置了一个默认值。

您的showimage.php中可能有什么问题:

$row = mysql_fetch_assoc($rs);
$imagebytes = $row[imgdata];

mysql_fetch_assoc返回一个关联数组。由于imgdata在这种情况下甚至不是一个变量,您应该将immdata更改为$imgdata,并使用包含图像数据/bob的MySQL表的列名初始化该变量如果列名imgdata,您可能只需要将其放在引号中,如下所示:

$imagebytes = $row['imgdata'];

第三个想法,我可能会错过这里,你使用imgdata作为常量(然后你应该考虑将常量标识符全部大写,以提高可读性)-如果是这样的话,请确保常量为MySQL表保留正确的列名。