我使用tinymce使用“laravel-tinymce-simple-imageupload”包进行图像上传。当用户在文本区域中输入一些内容并单击表单提交按钮时,我想将文本区域中的内容放入 pdf 文件中。我有下面的代码。
问题是,在 pdf 文件中,如果在文本区域中插入图像,则该图像不会出现在 pdf 中,并且在 pdf 中出现“找不到图像或类型未知”。
你知道问题出在哪里吗?
图像在证书表的内容列中存储如下:
<p>test<img src="/img/image_15zdbBr.jpeg" alt="" width="1200" height="900" /></p>
获取pdf的代码:
$certificateContent = RegistrationType::with('certificate')->where('id', $request->registrationType)->first();
$pdf = app()->make('dompdf.wrapper');
$pdf->loadHTML($certificateContent->certificate->content);
return $pdf->download('test.pdf');
Tinymce 代码将relative_urls 设置为 false:
tinymce.init({
selector:'textarea',
plugins: 'image code link',
relative_urls: false,
file_browser_callback: function(field_name, url, type, win) {
// trigger file upload form
if (type == 'image') $('#formUpload input').click();
}
});
我已经使用“setOptions(['isHtml5ParserEnabled' => true, 'isRemoteEnabled' => true])”,但也不起作用,它显示相同的错误。
看来这个问题可能是因为需要更改图像的 url 路径。但我不明白如何做到这一点,因为用户只在tinymce文本区域中选择图像,如何更改该图像的绝对路径。
最佳答案
这是一个已报告的问题:https://github.com/dompdf/dompdf/issues/1659 .
建议您:
- 将relative_urls设置为true(这会将图像设置为
img/image_15zdbBr.jpeg
,并且 - set
$dompdf->setBasePath($base_path)
其中 $base_path 是文件所在的位置。 ( https://github.com/dompdf/dompdf/wiki/Usage#setbasepath )
使用聊天中的重要部分进行编辑:
- 当您使用 Laravel 的包装器时,您需要获取 domPDF 类的句柄,您将通过
$pdf->getDomPDF()->setBasePath();
>
- 由于相对文件路径为
../../../image/file.jpg
,这意味着“从”基目录开始,返回一个,返回一个,返回返回一个,进入 img/,找到文件”。因此“基目录”需要位于文件之前,以便考虑您要返回的事实。
工作示例:
- 您的实际文件位于(真实)
/home/john/projects/proj/public/img/image.jpeg
- 相对文件路径(已提供)=
../../../img/image.jpeg
- 因此,您配置 setBasedirectory =
/home/john/projects/proj/public/a/b/c/
- 结合起来,您将得到
/home/john/projects/proj/public/a/b/c/../../../img/image.jpeg
- 与
/home/john/projects/proj/public/a/b/../../img/image.jpeg
相同 - 与
/home/john/projects/proj/public/a/../img/image.jpeg
相同 - 与
/home/john/projects/proj/public/img/image.jpeg
相同 = Bingo。
如果这不起作用,请调整您的 setBaseDirectory 直到获得正确的路径。
关于php - 未找到图像或类型未知(使用tinymce和dompdf来显示存储在pdf中tinymce文本区域中的html),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51316035/