В сообщении от Среда 10 октября 2007 23:33 Victor Wagner написал(a): > > есть соответствующий тиклевский модуль, вот только каждый новый документ > > открывается в новом окне, что не годится для массовой обработки > > документов. > > Алексей Новодворский (который из Alt Linux) рассказывал, что очень даже > годится. Вероятно, если не забывать документы закрывать по завершению > обработки. Опять же в headless режиме расход памяти должен быть заметно > меньше - окон-то нет.
Этот режим не работал, опенофис требовал Х-сервер невзирая на ключ -headless Однако сейчас проверил с openoffice 2.3 и, кажется, наконец-то работает: unset DISPLAY soffice -headless “-accept=socket,host=localhost,port=2003;urp;” Не исключено, что теперь и окна _возможно_ закрыть по завершению обработки документа, буду смотреть. Раньше они не закрывались до завершения процесса опенофиса. Вот нашел описание, как из консоли вызвать макрос http://www.openoffice.cz/node/1756 $ cat ooo2pdf.sh #!/bin/bash unset DISPLAY if [ "$1" = "" ]; then exit; fi fullpath=`cd \`dirname "$1"\` ; echo "\`pwd\`/\`basename "$1"\`"` soffice -invisible -headless -norestore "macro:///Standard.Module1.ConvertToPDF($fullpath)" Дисплей не используем, в отличии от того, что описано в указанной статье. Модифицированный таким образом скрипт с опенофис 2.3 работает. Посмотрим, как работает на примере одностраничного документа 1.odt: $ ls -l|grep odt -rw-r--r-- 1 veter veter 41733 2007-10-08 15:28 1.odt $ date;./ooo2pdf.sh ./1.odt ;date Чтв Окт 11 00:10:31 MSD 2007 Чтв Окт 11 00:10:42 MSD 2007 $ ls -l|grep pdf -rw-r--r-- 1 veter veter 61601 2007-10-11 00:12 1.pdf в то же время $ date;abiword 1.odt -t pdf;date Чтв Окт 11 00:12:48 MSD 2007 Чтв Окт 11 00:12:50 MSD 2007 $ ls -l|grep pdf -rw-r--r-- 1 veter veter 227198 2007-10-11 00:12 1.pdf Полученные pdf-файлы визуально одинаковы (колонтитулов нет, есть логотип, таблички, списки и форматированный текст). Итак, на конвертацию 1-й страницы опенофис требует 11-ть секунд, против 2-х для абиворд, зато создает документ pdf вчетверо меньшего объема. Обладатели мощных компов могут радоваться, мне же остается только абиворд, поскольку 11-ть секунд время неприемлемо большое. Хотя результирующий документ опенофиса мне понравился своим скромным размером. То же самое можно выполнять через сокет и наверняка существенно быстрее, но в этом случае придется беспокоиться о том, чтобы с запущенным экземпляром опенофиса не случилось худшее - безвременная кончина. Опробованный нами способ в этом отношении надежнее. Для чистоты эксперимента приведу параметры компьютера, на котором выполнялись тесты. $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 15 model : 2 model name : Intel(R) Celeron(R) CPU 2.40GHz stepping : 9 cpu MHz : 2422.805 cache size : 128 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe up cid xtpr bogomips : 4850.73 clflush size : 64 $ cat /proc/meminfo MemTotal: 500392 kB MemFree: 14756 kB Buffers: 3160 kB Cached: 188612 kB SwapCached: 124172 kB Active: 365116 kB Inactive: 38432 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 500392 kB LowFree: 14756 kB SwapTotal: 1485972 kB SwapFree: 1199280 kB Dirty: 948 kB Writeback: 0 kB AnonPages: 206600 kB Mapped: 105280 kB Slab: 21448 kB SReclaimable: 6280 kB SUnreclaim: 15168 kB PageTables: 3792 kB NFS_Unstable: 0 kB Bounce: 0 kB CommitLimit: 1736168 kB Committed_AS: 863824 kB VmallocTotal: 524280 kB VmallocUsed: 7104 kB VmallocChunk: 516844 kB