Я пытаюсь использовать 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);
Кто-нибудь может помочь мне понять проблему?
После заглядывания в исходный код PHP, иметь некоторое представление о «imagecreatefromstringmsgstr «функция, я обнаружил, что она обрабатывает только следующие форматы изображений:
PHP распознает формат изображения, содержащийся в аргументе функции «imagecreatefromstring», проверяя подпись изображения, как объяснено Вот.
При обнаружении неизвестной подписи выдается предупреждение «Данные не в распознанном формате».
Поэтому единственное правдоподобное объяснение ошибки, с которой вы столкнулись, заключается в том, Ваш файл PPTX содержит изображение, которое не в одном из вышеуказанных форматов.
Вы можете просмотреть формат изображений внутри вашего файла PPTX, изменив его расширение с «.pptx» на «.zip», а затем открыв его.
Вы должны увидеть что-то вроде этого:
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) может привести к рассматриваемой ошибке.
Сохраните ваш pptx снова в формате PPT 2007 в открытом офисе или в MS Powerpoint. Его проблема с форматом. Вы открываете совсем новый формат PPT с 2007 года.