Intereting Posts
Не разрешено загружать локальный ресурс: file: /// Длительный сценарий PHP останавливается при вызове через exec (), но заканчивается при вызове через CLI Как я могу распаковать двоичные форматированные данные в формате Python? Код для получения размера файла после загрузки и вставки в таблицу не работает Каков правильный формат соли blowfish с использованием склепа PHP? MySQL работает с 127.0.0.1, но не работает с localhost? PHP Найти координаты между двумя точками mysql update query для установки поля с идентификатором другой таблицы Как включить пользователя в любом месте в списке? Является ли это хорошей функцией пароля хеширования в PHP? Если нет, почему бы и нет? значения split из запроса http-запроса angularjs (данные) Propel ORM – Соединение несвязанных таблиц Мне нужно регулярное выражение php, которое заменяет один тег другим Где я могу получить расширения DLL для runkit для PHP 5.3+? Загруженные файлы docx, превращающиеся в zip-файлы

Анализ и создание файлов Microsoft Office 2007 (.docx, .xlsx, .pptx)

У меня есть веб-проект, где я должен импортировать текст и изображения из предоставленного пользователем документа, а одним из возможных форматов является Microsoft Office 2007. Также необходимо создавать документы в этом формате.

Сервер запускает CentOS 5.2 и имеет установленный PHP / Perl / Python. Я могу выполнить локальные двоичные файлы и сценарии оболочки, если нужно. Мы используем Apache 2.2, но будем переключаться на Nginx, когда он появится в прямом эфире.

Какие у меня варианты? У кого-нибудь был опыт?

Форматы файлов Office 2007 открыты и хорошо документированы . Грубо говоря, все новые форматы файлов, заканчивающиеся на «x», представляют собой сжатые XML-документы с zip-сжатием. Например:

Чтобы открыть XML-файл Word 2007, создайте временную папку для хранения файла и его частей.

Сохраните документ Word 2007, содержащий текст, изображения и другие элементы, в виде файла .docx.

Добавьте расширение .zip в конец имени файла.

Дважды щелкните файл. Он откроется в приложении ZIP. Вы можете увидеть части, которые содержат файл.

Извлеките части в папку, созданную ранее.

Другие форматы файлов примерно одинаковы. Я не знаю каких-либо библиотек с открытым исходным кодом для взаимодействия с ними пока, но в зависимости от ваших точных требований, не слишком сложно читать и писать простые документы. Конечно, это должно быть намного проще, чем с более старыми форматами.

Если вам нужно прочитать старые форматы, OpenOffice имеет API и может читать и писать Office 2003 и более старые документы с большим или меньшим успехом.

Модуль python docx может создавать отформатированные файлы Microsoft Office docx из чистого Python. Из коробки это заголовки, абзацы, таблицы и маркеры, но модуль makeelement () может быть расширен, чтобы делать произвольные элементы, такие как изображения.

from docx import * document = newdocument() # This location is where most document content lives docbody = document.xpath('/w:document/w:body',namespaces=wordnamespaces)[0] # Append two headings docbody.append(heading('Heading',1) ) docbody.append(heading('Subheading',2)) docbody.append(paragraph('Some text') 

Я успешно использовал SDK OpenXML Format в проекте для изменения электронной таблицы Excel с помощью кода. Для этого потребуется .NET, и я не уверен, насколько это будет работать в Mono.

Вероятно, вы можете проверить код для Sphider . Они документируют и pdf-файлы, поэтому я уверен, что они могут их прочитать. Возможно также привести вас в правильном направлении для других форматов Office.