我正在尝试使用 PhpPresentation 来阅读sample.pptx
使用文档中为读者提供的简单说明进行文件处理,我得到:
imagecreatefromstring(): Data is not in a recognized format
我已检查是否已安装 PHP7.2-gd 以及所有其他依赖项。
My Code:
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);
有人可以帮助我理解这个问题吗?
窥探之后PHP 源代码 https://github.com/php/php-src/blob/master/ext/gd/gd.c#L2287,对“图像从字符串创建 http://php.net/manual/en/function.imagecreatefromstring.php" 函数,我发现它只处理以下图像格式:
- JPEG
- PNG
- GIF
- WBM
- GD2
- BMP
- WEBP
PHP 通过检查图像签名来识别“imagecreatefromstring”函数参数中包含的图像格式,如下所示here https://oroboro.com/image-format-magic-bytes/.
当检测到未知签名时,会发出警告“数据不是可识别的格式”。
因此,对于您遇到的错误的唯一合理的解释是您的 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
如你所见,我的样本.pptx文件包含一些 JPEG 和 PNG 格式的图像。
也许您的示例文件包含一些带有矢量格式(WMF 或 EMF)图像的幻灯片;我不清楚(因为我没有找到任何参考资料)the docs https://media.readthedocs.org/pdf/phppowerpoint/latest/phppowerpoint.pdf) 是否支持这些格式。
最终您应该尝试使用其他 PPTX 文件,只是为了确保问题与特定文件无关(您可以在“测试/资源/文件 https://github.com/PHPOffice/PHPPresentation/tree/develop/tests/resources/files").
我搜索了 PowerPoint 文件支持的图像格式列表,但未能找到准确的答案。
我发现的唯一相关链接如下:
- ECMA 376 Open Office XML 第一版 - 图像部分 https://c-rex.net/projects/samples/ooxml/e1/Part1/OOXML_P1_Fundamentals_Image_topic_ID0EGXDO.html#topic_ID0EGXDO
-
ISO/IEC 29500 办公室实施信息
标准支持 https://interoperability.blob.core.windows.net/files/MS-OI29500/%5BMS-OI29500%5D.pdf(2.1.32 第 1 部分第 15.2.14 节,图像部分,第 57/58 页)
-
Open XML 文档中的图像 https://blogs.msdn.microsoft.com/dmahugh/2006/12/10/images-in-open-xml-documents/(阅读页末的评论)
- OpenXML 开发者论坛上的问题 http://openxmldeveloper.org/discussions/formats/f/15/p/418/944.aspx#944
这意味着 PPTX 文件中存在 TIFF 或 PICT (QuickDraw) 格式的图像也可能导致所考虑的错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)