我使用HTML2PDF Librairy创建PDF和MySQL时遇到问题。 我想显示图像而不显示。 有人知道怎么做吗?
例如:我的代码如下:
<?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
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;
?>
答案 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表中。