图像未显示在php的exeoutput下使用mpdf

时间:2019-02-19 16:55:23

标签: php codeigniter pdf desktop-application mpdf

我正在使用EXEOUTPUT for PHP使用Codeigniter框架创建桌面应用程序。所有网页都显示了存储在MYSQL BLOB字段中的图像,但是只有mpdf库生成的pdf无法显示图像。

当我在浏览器中运行相同的代码时,将显示图像。即使当我将基本URL用作http://localhost/applicationname/时,也会显示图像。但是,当我使用http://heserver/作为基本URL在Exeoutput for PHP中执行相同的代码时,图像未显示。

$config['base_url'] = 'http://heserver/';
//$config['base_url'] = 'http://localhost/applicationname/';

我也尝试过访问文件夹中上载的图像,也无法访问它们。 mpdf库是否需要一些位置才能在渲染之前临时渲染图像?还是有其他问题?

我尝试了以下所有变体:

$top.='<img width="40px" src="logo.png"/>'; //accessing from file system
$top.='<img width="40px" src="data:image/png;base64,'.base64_encode($this->session->userdata('logo')).'"/>'; //accessing from database
$top.='<img width="30px" src="'.exo_getglobalvariable('HEPubStorageLocation', '').'rs\logo.png" />' //accessing through variable provided by exeoutput4php tool

ob_clean();
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="'.$billno.'.pdf"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
include($_SERVER['DOCUMENT_ROOT']."/application/views/admin/mpdf/vendor/autoload.php");
$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML($top);
$mpdf->SetJS('this.print();');
$mpdf->Output();
exit;

我也尝试了一个绝对的虚拟数据文件夹,但是没有任何作用。

我已将图像用作外部资源,尝试通过在图像标签中将子文件夹/图像名称作为src传递来调用它,但是图像不可见。

请提出一些解决方案。

1 个答案:

答案 0 :(得分:1)

除非您使用$_SERVER超全局变量引用它们,否则大多数PDF库将无法嵌入图像,因为它们不需要图像的URI(https://example.com/directory/file.jpg),而是路径/home/user/directory/directory/.../file.jpg)。

尝试引用您的图像(用于PDF导出),例如:

<img src="<?php echo $_SERVER['DOCUMENT_ROOT']; ?>/assets/pdf_images/logo.png" border="0" width="174" height="38">

(这是我自己的代码,直接更改路径和属性以适合您自己的情况)