2

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

例如:我有以下代码:

书签.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;
    }
?>

显示图像.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;
?>
4

2 回答 2

1

这是旧的,但由于没有提供正确的答案,我会试着捏一下。Html2pdf 是用来直接从磁盘加载图像而不使用 http。在当前版本中,您会收到一条错误消息,说它无法加载图像...

链接图像的常用方法是:

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

代替:

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

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

echo '<img src="data:image/jpeg;base64,'.base64_encode($row[imgdata]).'"/>';
于 2013-11-13T02:54:05.017 回答
0

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

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

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

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

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

$imagebytes = $row['imgdata'];

第三个想法,我可能会在这里错过,您正在使用imgdata作为常量(那么您应该考虑将常量标识符全部设为大写以提高可读性) - 如果是这种情况,请确保常量包含正确的列名MySQL 表。

于 2012-08-06T11:28:25.857 回答