我试图使用PhpPresentation来读取一个sample.pptx文件,使用对他们的文档中的读者的简单说明,我得到:
imagecreatefromstring(): Data is not in a recognized format
我已经检查是否安装了PHP7.2-gd和所有其他依赖项。
我的守则:
require_once 'vendor/autoload.php';
use \PhpOffice\PhpPresentation\PhpPresentation;
use \PhpOffice\PhpPresentation\IOFactory;
use \PhpOffice\PhpPresentation\Style\Color;
use \PhpOffice\PhpPresentation\Style\Alignment;
$oReader = IOFactory::createReader('PowerPoint2007');
$data = $oReader->load(__DIR__ . '/sample.pptx');
var_dump($data);有人能帮我理解这个问题吗?
发布于 2018-09-21 20:23:54
在浏览了PHP源代码之后,为了对"图像从字符串“函数有一些了解,我发现它只处理以下图像格式:
PHP通过检查图像签名来识别包含在"imagecreatefromstring“函数的参数中的图像格式,正如这里所解释的。
当检测到未知签名时,将引发“数据不在可识别格式”的警告。
因此,对于您正在经历的错误,唯一合理的解释是,您的PPTX文件包含的图像不是上述格式的之一。
您可以通过将其扩展名从".pptx“更改为".zip”,然后打开它,从而查看PPTX文件中的图像格式。
你应该看到这样的东西:
Archive: sample.pptx
Length Date Time Name
--------- ---------- ----- ----
5207 1980-01-01 00:00 [Content_Types].xml
...
6979 1980-01-01 00:00 ppt/media/image1.jpeg
6528 1980-01-01 00:00 ppt/media/image2.jpeg
178037 1980-01-01 00:00 ppt/media/image3.jpeg
229685 1980-01-01 00:00 ppt/media/image4.jpeg
164476 1980-01-01 00:00 ppt/media/image5.jpeg
6802 1980-01-01 00:00 ppt/media/image6.png
19012 1980-01-01 00:00 ppt/media/image7.png
32146 1980-01-01 00:00 ppt/media/image8.png
...
--------- -------
795623 74 files如您所见,我的sample.pptx文件包含一些JPEG和PNG格式的图像。
也许您的示例文件包含一些带有矢量格式(WMF或EMF)图像的幻灯片;我不清楚(因为我没有在医生们中找到任何引用)是否支持这些格式。最后,您应该尝试使用其他PPTX文件,以确保问题与特定的问题无关(您可以在“测试/资源/文件”下找到一些)。
我已经为PowerPoint文件搜索了支持的图像格式列表,但是我还没有找到准确的响应。
我发现的唯一相关链接如下:
这意味着在PPTX文件中还存在TIFF或PICT (QuickDraw)格式的图像可能导致正在考虑的错误。
发布于 2018-09-25 22:12:11
再次将pptx保存为PPT 2007格式,打开office或MS Powerpoint.Its格式,issue.You将在2007年打开最新的PPT格式。
https://stackoverflow.com/questions/51634838
复制相似问题