PhpPresentation imagecreatefromstring (): данные не в распознанном формате — PHP7.2

Я пытаюсь использовать 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);

Кто-нибудь может помочь мне понять проблему?

8

Решение

После заглядывания в исходный код PHP, иметь некоторое представление о «imagecreatefromstringmsgstr «функция, я обнаружил, что она обрабатывает только следующие форматы изображений:

  • JPEG
  • PNG
  • GIF
  • WBM
  • GD2
  • BMP
  • WebP

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) может привести к рассматриваемой ошибке.

5

Другие решения

Сохраните ваш pptx снова в формате PPT 2007 в открытом офисе или в MS Powerpoint. Его проблема с форматом. Вы открываете совсем новый формат PPT с 2007 года.

0

По вопросам рекламы [email protected]