Конвертация из ODT в PDF

В связи с тем, что не у всех имеется возможность прочитать документы в формате ODT, возникла необходимость переписать генератор счетов для регистраторов. Но я решил пойти другим путем 😉

Вот, может еще кто не знает:

  1. Устанавливаем пакеты unoconv и openoffice.org-writer
  2. Запускаем в фоне сервер OpenOffice:
    # unoconv --listener &
    [1] 1234
  3. Конвертируем:
    $ unoconv -v -f pdf /tmp/filename.odt
    Input file: /tmp/filename.odt
    Selected output format: Portable Document Format [.pdf]
    Selected ooffice filter: writer_pdf_Export
    Used doctype: document
    Output file: /tmp/filename.pdf

Можно запускать сервер офиса только перед генерацией документов, а можно все время дежать его запущенным, если нужен достаточно часто (чуть больше 100 Mb в памяти, X-ы не нужны).

Способ хорош тем, что доступна конвертация между всеми форматами, которые поддерживает OpenOffice (естественно, что для некоторых форматов может потребоваться не только openoffice.org-writer). Т.е. если можно документ в одном формате офисом открыть, а в другом сохранить – конвертация произойдет.

Ну а плох тем, что тянет за собой с полгига всякого гамуза (если офиса и java-машины в системе ранее не было). Впрочем, винты сейчас большие 😉

UPD: Запускаем через incron:

# aptitude install incron
# echo “fatality” >> incron.allow
# mkdir /home/fatality/incrontest
# chown fatality:fatality /home/fatality/incrontest
# incrontab -u fatality -e

/home/fatality/incrontest/ IN_MOVED_TO /home/fatality/bin/incrontest.sh $@ $#

# cat /var/spool/incron/fatality
# su fatality
% vim /home/fatality/bin/incrontest.sh

#!/bin/sh

cd $1
/usr/bin/unoconv -v -f pdf ${1}${2}

% mv 1.odt /home/fatality/incrontest/

Опубліковано у Корисне. Додати до закладок постійне посилання.

0 коментарів до Конвертация из ODT в PDF

  1. Алексей коментує:

    не пробовали запускать по событию ?

    я в incron засунул, и оттуда оно не работает, хотя в ручную скрипт запускается..

Залишити коментар до Алексей Скасувати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*