1

TCPDF:如何使用从 MySQL 数据库中检索到的 BLOB 值在 TCPDF 中显示图像?

4

3 回答 3

7

示例 #9 - Image()

// Example of Image from data stream ('PHP rules')
$imgdata = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABlBMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDrEX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==');

// The '@' character is used to indicate that follows an image data stream and not an image file name
$pdf->Image('@'.$imgdata);

API 文档Image()更详细地解释了它:

$file (string) 包含图像的文件的名称或后跟图像数据字符串的“@”字符。要链接图像而不将其嵌入到文档中,请在 URL 前设置一个星号字符(即:) *http://www.example.com/image.jpg

于 2013-08-27T10:55:40.893 回答
0

正如 Álvaro González TCPDF 已经回答的那样,您可以将图像 blob 传递给TCPDF::Image(),但这有一些主要缺点:

TCPDF 图像缓存不适用于图像 blob。因此,如果多次传递相同的图像,TCPDF 会消耗更多的内存。

如果您传递图像 blob,TCPDF 会将其写入临时文件。但它不会检查是否已经提供了相同的图像 blob。因此,即使您再次传递相同的图像,它也会写入新的临时文件。这不仅会导致不必要的 IO,还会破坏 tcpdf 中的图像缓存构建。

长话短说:如果您多次使用图像,请不要将图像 blob 传递给 tcpdf。将其保存到一个临时文件并传递该文件。

于 2017-10-24T12:26:20.080 回答
0

我发现许多php TCPDF 库用户大多对 mysqli 数据库感到两难,请遵循以下快速指南

  1. 准备好你的 TCPDF 配置,你的文本编辑器
  2. 开始工作
  3. 打开您的 php 文件,该文件将用于加载生成的 pdf 文档
  4. 包括以下
  1. 建立数据库连接如下

$sql = "SELECT * FROM members WHERE id = '".$_SESSION['user']."'"; $query = $conn->query($sql); $user=(!empty($user['photo'])) ?'images/'.$user['photo'] : 'images/profile.jpg' $user = $query->fetch_assoc();

  1. 包含所有 pdf 参数以在浏览器上设置 pdf 环境

    // 创建新的 PDF 文档

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// 设置文档信息 $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor('Nicola Asuni'); $pdf->SetTitle('TCPPDF Example 009'); $pdf->SetSubject('TCPPDF 教程'); $pdf->SetKeywords('TCPPDF, PDF, example, test, guide');

// 设置默认标题数据 $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.'009', PDF_HEADER_STRING);

// 设置页眉和页脚字体 $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// 设置默认等宽字体 $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// 设置边距 $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// 设置自动分页符 $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// 设置图像比例因子 $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// 设置一些与语言相关的字符串(可选) if (@file_exists(dirname( FILE ).'/lang/eng.php')) { require_once(dirname( FILE ).'/lang/eng.php'); $pdf->setLanguageArray($l); }

//------------------------------------------------ ------------------

// 添加一个页面 $pdf->AddPage();

// 设置 JPEG 质量 $pdf->setJPEGQuality(75);

  1. 叫你图像参数

$x = 165; $y = 28; $w = 50; $h = 50; // 调整大小的图像示例 $pdf->Image('images/'.$voter['photo']."",$x, $y, $w, $h, 'JPG','');

  1. $x 表示水平填充,$y 表示垂直填充,$w 表示宽度,$h 分别表示高度。

  2. 设置你的输出

$pdf->输出('adding_from_Myqli_database.pdf', 'I');

  1. 关闭你的 php 标签

?>

  1. 希望你从中吸取教训,也许你的问题已经解决了
于 2019-02-06T23:22:03.833 回答