Php 将Tinymce与dompdf集成
Im使用tinymce和图像上传,使用软件包“Php 将Tinymce与dompdf集成,php,laravel,dompdf,Php,Laravel,Dompdf,Im使用tinymce和图像上传,使用软件包“laravel tinymce simple imageupload”。因此,我有一个页面,用户可以在其中选择注册类型,并在tinymce文本区域中输入一些内容,以将该内容与所选注册类型相关联 在文本区域,用户还可以使用tinymce simple image upload上传图像,这些图像存储在“~/projects/proj/public/img/image_15…”中 内容存储在“内容”列中证书表的数据库中,如: 如下图所示,在html静态模式
laravel tinymce simple imageupload
”。因此,我有一个页面,用户可以在其中选择注册类型,并在tinymce文本区域中输入一些内容,以将该内容与所选注册类型相关联
在文本区域,用户还可以使用tinymce simple image upload上传图像,这些图像存储在“~/projects/proj/public/img/image_15…”中
内容存储在“内容”列中证书表的数据库中,如:
如下图所示,在html静态模式下,图像将显示在下载的pdf中:
$pdf = app()->make('dompdf.wrapper');
$pdf->loadHTML('
<p>cert1<img src="'.public_path().
'/img/image_1532441196_7GT.jpeg"
alt="" width="1200" height="900" /></p>');
return $pdf->download('certificates.pdf');
$content变量如下所示:
"""
<div style="page-break-inside: avoid; page-break-after: always;">\n
<p>cert1<img src="../../../img/image_1532441196_7GT.jpeg"
alt="" width="1200" height="900" /></p></div> ▶
</div>
"""
更改:
$pdf->getDomPDF()->setBasePath(public_path().'/../../');
致:
然后你只需要
$pdf->loadHTML('<p>cert1<img src="/img/image_1532441196_7GT.jpeg"
alt="" width="1200" height="900" /></p>');
您的内容数据存储方式如下:
<p>certificate 1<img src="../../../img/image_1532441196_7GT.jpeg" alt="" width="1200" height="900" /></p>
证书1
要解决此问题,您可以更新数据库中的数据以将其更改为
<p>certificate 1<img src="img/image_1532441196_7GT.jpeg" alt="" width="1200" height="900" /></p>
证书1
或者,您可以在将内容转换为pdf之前对其进行转换:
$content = str_replace('<img src="../../../','<img src="',$content);
$pdf->loadHTML($content);
$content=str_replace('loadHTML($content);
我不知道你为什么要用html存储img src——这是一种糟糕的做法。我也不知道还有哪些地方在使用这些数据。如果这一代pdf是你使用这些数据的唯一地方,你可以修改数据库中的数据,以保持php代码的整洁。但是如果你在其他地方将这些内容与一些页面小部件一起使用,你可能需要保留这些数据。您必须使用完整的服务器路径。
要解决此问题,必须将。/../../
替换为projects/proj/public
像这样做
从那以后它就这样了
非常感谢,$pdf显示的基本路径类似“-basePath:”/Users/john/projects”,下载的pdf中仍然显示错误“Image not found or type unknown”而不是图像。您希望使用什么来代替“”-basePath:“/Users/john/projects
”?谢谢,但是带有静态html的代码类似“$pdf->loadHTML>(“cert1”);“有效。问题是内容是静态的,但需要实际使用存储在数据库中的html信息。您在OP中编写的$content变量显示为:……该变量不起作用。它应该是图像文件的完整url。感谢将数据库更改为“cert1”“图像显示在pdf中。您的文件夹结构是什么?您的应用程序在哪里?图像在哪里?为什么要执行$pdf->getDomPDF()->setBasePath(public_path()./../../../”;
?项目位于“~/projects/proj”中。使用tinymce上载的图像位于“~/projects/proj/public/img/image_15…””。
$pdf->getDomPDF()->setBasePath(public_path());
$pdf->loadHTML('<p>cert1<img src="/img/image_1532441196_7GT.jpeg"
alt="" width="1200" height="900" /></p>');
$participant->registration_type->certificate->content
<p>certificate 1<img src="../../../img/image_1532441196_7GT.jpeg" alt="" width="1200" height="900" /></p>
<p>certificate 1<img src="img/image_1532441196_7GT.jpeg" alt="" width="1200" height="900" /></p>
$content = str_replace('<img src="../../../','<img src="',$content);
$pdf->loadHTML($content);
<?php str_replace('../../../','projects/proj/public',$content); ?>
<img src="{{ public_path("projects/proj/public/img/".$ImageName) }}" alt="">