Недавно я анонсировал свой вариант чтения презентаций PowerPoint с помощью чистого PHP. Тогда я с сожалением отметил, что класс сырой и нуждается в доработке. Долго ли, коротко ли, но ошибки были найдены — теперь файлы читаются заметно лучше, без всякой грязи. Надеюсь, вам пригодятся мои наработки.
Ошибка (основная), как и предполагалось была в неправильном прочтении
Раньше я читал абсолютно неправильно, удивительно, что это как-то работало. В связи с тем, что ошибка серьёзная и, возможно, есть люди, которым могут пригодиться мои классы, то пишу топик второй раз.
Код с комментариями вы можете получить на GitHub'е.
Ошибка (основная), как и предполагалось была в неправильном прочтении
PersistDirectory
. То ли мой английский меня подводит, то ли Microsoft слишком запутанно пишет свои документы, но как читать структуру по смещению OffsetPersistDirectory
я сообразил не сразу же. Оказывается структура состоит из троек: PersistId
— ID первого вхождения в директорию, cPersist
— количество вхождений, которые нужно прочесть, после данного значения. А потом n = cPersist
четырёхбайтовых значений persistOffset
— смещений к вхождениям в PersistDirectory
.Раньше я читал абсолютно неправильно, удивительно, что это как-то работало. В связи с тем, что ошибка серьёзная и, возможно, есть люди, которым могут пригодиться мои классы, то пишу топик второй раз.
Код с комментариями вы можете получить на GitHub'е.