В связи с тем, что не у всех имеется возможность прочитать документы в формате ODT, возникла необходимость переписать генератор счетов для регистраторов. Но я решил пойти другим путем 😉
Вот, может еще кто не знает:
- Устанавливаем пакеты unoconv и openoffice.org-writer
- Запускаем в фоне сервер OpenOffice:
# unoconv --listener &
[1] 1234
- Конвертируем:
$ 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/
не пробовали запускать по событию ?
я в incron засунул, и оттуда оно не работает, хотя в ручную скрипт запускается..
Не пробовал, но по идее должно работать. Классная идея, кстати…
все испробовал, не запускается оно по событию и все тут, и не говорит по чему..
для себя сделал через openoffice –
http://goo.gl/eHvHY
Все запускается, см. UPD.