среда, 25 января 2012 г.

Конвертирование офисных документов для просмотра online

Для одного из проектов понадобилось отображать офисные документы online (на начальном этапе предполагается работа с документами Word/Excel/Powerpoint).

В процессе изучения вопроса появилось возможное решение проблемы (список будет пополняться):
  • Использовать OpenOffice/LibreOffice для конвертации в промежуточный формат (pdf) и затем преобразование pdf в swf через swftools.
  • Использовать unoconv для конвертации в xhtml

OpenOffice/LibreOffice + swftools


Я буду рассматривать вопрос в контексте LibreOffice (далее LO) на Debian Squeeze.

Для работы начала нужно запустить LO в т.н. headless mode.

$ soffice "--accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" --nologo --headless --nofirststartwizard --norestore

Для конвертирования документов в pdf использовался PyODConverter. Для работы PyODConverter требуется пакет python-uno. Сам процесс конвертирования выглядит так:

$ python ./DocumentConverter.py ./source.doc ./result.pdf

После преобразования в pdf, нужно конвертировать результат в SWF, который можно внедрить в веб-страницу.

$ pdf2swf --quiet -f --set simpleviewer ./result.pdf --output ./result.swf

Поскольку в Debian нет пакета для swftools, я собрал тестовый пакет, который доступен в моем репозитории.

Unoconv


Версия unoconv, доступная в squeeze, старовата (0.3-6), поэтому я установил версию из unstable (0.4-1). Попробовал конвертировать:

$ unoconv --format xhtml --stdout source.doc > result.html

Документ сконвертировался неплохо, однако есть сомнения насчет разметки в сложных документах.

Комментариев нет:

Отправить комментарий