【问题标题】:Create PDF with HTML2PDF and MySQL使用 HTML2PDF 和 MySQL 创建 PDF
【发布时间】:2012-08-04 23:47:58
【问题描述】:

我在使用 HTML2PDF 库创建 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;
?>

【问题讨论】:

    标签: php mysql pdf html2pdf


    【解决方案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]).'"/>';
    

    【讨论】:

      【解决方案2】:

      我想知道您是否收到错误消息。也许让 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 作为常量(那么您应该考虑将常量标识符全部设为大写以提高可读性) - 如果是这种情况,请制作确保常量为您的 MySQL 表保存正确的列名。

      【讨论】:

      • "$imagebytes = $row['imgdata'];"... 这行不通。错误消息:ERROR n°6 文件:html2pdf.class.php 行:1319 无法加载图像 showimage.php。当我从 FTP 加载图像时,工作完美。
      • 我错过了另一件事:如果您的 MySQL 表包含多个条目,您的$rs = mysql_query("select * from gallery"); 行肯定会导致问题。这意味着您必须添加一个条件,即WHERE 子句,以将结果缩小到一个图像。例如,如果您的表有 id 列,请尝试 $rs = mysql_query("select * from gallery where id = 1");
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 2014-06-26
      相关资源
      最近更新 更多