找不到图像或类型未知(将tinymce与dompdf一起使用,以pdf格式显示在tinymce textarea中存储的html) - php

我正在使用tinymce,并使用“ laravel-tinymce-simple-imageupload”包上传图片。当用户在文本区域中输入一些内容并单击表单提交按钮时,我想将文本区域中的内容放入pdf文件中。我有下面的代码。

问题是,在pdf文件中,如果在textarea中插入了图像,则该图像不会出现在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,并且
设置$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 Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

PHP:填写数组中的“空白” - php

我有一个php数组(通过表单中的复选框值获取-您知道复选框仅在未设置时显示在_POST变量中)。Array ( [2] => 0,2 [3] => 0,3 ) 我需要一种方法来“填补” 0-5之间的差距。所以上面看起来像(用'-1'填充空白。我尝试用填充有'-1'的数组array_merge(),但这没用。Array ( [0] => -1…

PHP:将字符串拆分为字母和数字部分的最佳方法 - php

我有几个格式的字符串AA11 AAAAAA1111111 AA1111111 分离字符串的字母和数字部分的最佳方法(最有效)? 参考方案 如果它们都是一系列字母,然后是一系列数字,并且没有非字母数字字符,那么sscanf()可能比regexp更有效$example = 'AAA11111'; list($alpha,$numeric) =…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…