TCPDF - 图片未显示

4
我将助您翻译以下内容。这是一篇关于IT技术的文章。

我正在尝试从数据库中提取一些数据和图像并保存为PDF文件。我可以正常保存,但是图片无法显示。$ft1、$ft2和$ft3是数据库变量,它们存储了图片的名称。

以下是我的测试代码:

    require_once('../tcpdf/config/lang/bra.php');
    require_once('../tcpdf/tcpdf.php'); 

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

    // set document information
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('Nicola Asuni');
    $pdf->SetTitle('TCPDF Example 006');
    $pdf->SetSubject('TCPDF Tutorial');
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');

    $pdf->setPrintHeader(false);
    $pdf->setPrintFooter(false);

    // set default monospaced font
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

    //set margins
    $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

    //set auto page breaks
    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

    //set image scale factor
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

    //set some language-dependent strings
    $pdf->setLanguageArray($l);

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

    // set font
    $pdf->SetFont('helvetica', '', 10);

    // add a page
    $pdf->AddPage();

    $html.= "<div><img src='../uploads/".$ft1."' width='200' height='400' /><br><br><img src='../uploads/".$ft2."' /><br><br><img src='../../uploads/".$ft3."' /></div>";

    $pdf->writeHTML($html, true, false, true, false, '');

    $pdf->lastPage();

    ob_clean();

    $pdf->Output('../uploads/'.$norepeat.'_relatorio_'.$idcontrato.'_'.formatDataJustNumbers($_POST['datarelatorio']).'.pdf', 'F');

相对路径?尝试使用绝对路径,看看是否可行。 - Orbling
2
其他需要注意的事项包括:从脚本中读取图像的访问权限、安装了GD或IMagick、支持的图像类型等。通常人们在HTML属性上使用双引号。 - Orbling
$html .= '<div><img src="../uploads/'. $ft1 .'" width="200" height="400" /><br /><br /><img src="../uploads/'. $ft2 .'" /><br /><br /><img src="../../uploads/'. $ft3 .'" /></div>'; - Benny Hill
2
感谢Orbling和Benny Hill,双引号问题已解决。我还将tcpdf文件夹内的缓存文件夹chmod为777。 - MCP
1
你应该分配的最大值是775,而不是777。 - 000
4个回答

4

虽然这篇文章有点旧了,但是我来这里寻求帮助:

官方文档指出所有HTML属性都必须用双引号括起来。

width='200' height='400'

Needs to be:

width="200" height="400"

为了使图像显示,这对我很有帮助。 参考:https://tcpdf.org/docs/srcdoc/TCPDF/class-TCPDF/#_writeHTML

1

有两个问题;

  1. 您需要使用绝对路径,
  2. 请更改此行;

    $html .= "



    ";

变成这样;

$html.= "<div><img src='../uploads/$ft1' width='200' height='400' /><br><br><img src='../uploads/$ft2' /><br><br><img src='../../uploads/$ft3' /></div>";

0
我正在使用php-fpm的docker镜像运行任务,使用tcpdf从HTML模板生成pdf。我发现tcpdf会在以'/'开头的图像src值上附加$_SERVER ['DOCUMENT_ROOT'],导致pdf中没有显示任何图像。
解决方法是将$_SERVER ['DOCUMENT_ROOT']设置为空字符串。
$_SERVER['DOCUMENT_ROOT'] = "";

0

在绝对路径之前检查栏

对我来说,修复PDF中未显示图像的方法是从绝对路径的开头删除栏。

例子

对我来说错误的:

 $image_file = '/assets/img/setor9.png';
 $this->Image($image_file, 165, 20, 25, '', 'PNG', '', 'T', false, 300, '', false, false, 0, false, false, false);

正确:

 $image_file = 'assets/img/setor9.png';
 $this->Image($image_file, 165, 20, 25, '', 'PNG', '', 'T', false, 300, '', false, false, 0, false, false, false);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接