php - 未找到图像或类型未知(使用tinymce和dompdf来显示存储在pdf中tinymce文本区域中的html)

标签 php jquery laravel tinymce dompdf

我使用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 .

建议您:

  1. 将relative_urls设置为true(这会将图像设置为img/image_15zdbBr.jpeg,并且
  2. set $dompdf->setBasePath($base_path) 其中 $base_path 是文件所在的位置。 ( https://github.com/dompdf/dompdf/wiki/Usage#setbasepath )

使用聊天中的重要部分进行编辑:

  1. 当您使用 Laravel 的包装器时,您需要获取 domPDF 类的句柄,您将通过 $pdf->getDomPDF()->setBasePath();
  2. >
  3. 由于相对文件路径为../../../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/

相关文章:

php - 如何从数据库中选择最近的 gps 坐标?

javascript - 从ajax html响应创建jquery元素

javascript - svg图像缩放、平移和编辑

jquery - 使用Jquery设置默认关闭的元素

php - 如何使用 whereBetween() 从选定的 DB::raw() 值进行查询

php - 如何仅在 LIKE 查询 Laravel 中找到整个单词?

php - 警告 : Input variables exceeded 1000

php - 创建 "two way"配置文件

php - Codeigniter数据库错误

mysql - 为什么 Laravel 时间戳字段可以为空?