使用HTML2PDF和MySQL创建PDF

时间:2012-08-04 23:47:59

标签: php mysql pdf html2pdf

我使用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;
?>

2 个答案:

答案 0 :(得分:1)

这已经过时但由于没有提供正确的答案,我将尝试捏入.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]).'"/>';

答案 1 :(得分:0)

我想知道您是否收到错误消息。也许让错误/警告报告中的PHP更加冗长是一个想法。

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

你的showimage.php可能存在什么问题:

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

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

$imagebytes = $row['imgdata'];

第三个想法,我可能会错过这里,你使用 imgdata 作为一个常量(那么你应该考虑将常量标识符全部大写以获得更好的可读性) - 如果是这样的话,那就make确保常量将正确的列名保存到MySQL表中。