У меня есть веб-проект, в котором я должен импортировать текст и изображения из предоставленного пользователем документа, и одним из возможных форматов является Microsoft Office 2007. Также необходимо создавать документы в этом формате.
Сервер работает под управлением CentOS 5.2 и на нем установлен PHP / Perl / Python. При необходимости я могу выполнить локальные двоичные файлы и сценарии оболочки. Мы используем Apache 2.2, но перейдем на Nginx, как только он будет запущен.
Какие у меня варианты? У кого-нибудь был опыт с этим?






Вероятно, вы можете проверить код для Сфайдер. Это документы и PDF-файлы, поэтому я уверен, что они могут их прочитать. Может также привести вас в правильном направлении для других форматов Office.
Форматы файлов Office 2007 открыты и хорошо документированы. Грубо говоря, все новые форматы файлов, оканчивающиеся на «x», представляют собой XML-документы, сжатые в формате zip. Например:
To open a Word 2007 XML file Create a temporary folder in which to store the file and its parts.
Save a Word 2007 document, containing text, pictures, and other elements, as a .docx file.
Add a .zip extension to the end of the file name.
Double-click the file. It will open in the ZIP application. You can see the parts that comprise the file.
Extract the parts to the folder that you created previously.
Остальные форматы файлов примерно схожи. Я пока не знаю никаких библиотек с открытым исходным кодом для взаимодействия с ними, но, в зависимости от ваших конкретных требований, читать и писать простые документы не слишком сложно. Конечно, это должно быть намного проще, чем со старыми форматами.
Если вам нужно читать старые форматы, OpenOffice имеет API и может читать и записывать Office 2003 и более старые документы с большим или меньшим успехом.
Я успешно использовал Пакет SDK для формата OpenXML в проекте для изменения электронной таблицы Excel с помощью кода. Для этого потребуется .NET, и я не уверен, насколько хорошо он будет работать с Mono.
Модуль 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')