Ошибка преобразования тысяч документов с помощью LibreOffice

Я пытаюсь преобразовать несколько тысяч документов из LWP (Lotus Word Pro) в DOC. Когда процесс конвертации достигает примерно 250 (до 229 в некоторых случаях, 248 в других, 245 и т. Д. Около 250) документов, конвертируемых он просто выходит.

Конечные линии, которые я использую, чтобы преобразовать это:

soffice --headless --convert-to doc --outdir /home/cyrex/work/biopsias/2007 *.lwp

или

libreoffice --headless --convert-to doc --outdir /home/cyrex/work/biopsias/2007 *.lwp

обе работают, но только получают примерно до 250. У меня есть 60 тыс. документов для конвертации, и выполнение их по 200 за раз займет ОЧЕНЬ много времени.

Преобразование их в ODT также имеет ту же проблему.

У меня есть LibreOffice версии 3.5

ОБНОВЛЕНИЕ: Я проверил, был ли файл 229 причиной. Я также проверил, был ли следующий или предыдущий файл причиной. Negative. Я даже удалил предыдущие 20 файлов до барьера 250 и 20 после него. Та же проблема. Я также без проблем открыл файл 229, файл 228 и файл 230 в LibreOffice. Это просто случайно проваливается до 250.

ОБНОВЛЕНИЕ 2: Попробовал с другой совершенно другой группой файлов, на этот раз, DOC. Снова это становится меньше чем ~ 250. На всякий случай, у меня есть следующее оборудование:

CPU - Core i7 2600
RAM: 16 ГБ
HDD: 120 ГБ SSD
MOBO: Intel DZ68DB
ОС: Ubuntu 32 Bit

6
задан 2 August 2012 в 21:50

3 ответа

Я сделал следующее, но не буду отмечать это как ответ. Это только решает делать все преобразования. Проблема все еще существует. Она взяла идею из ответа Бьорна Михаэльсена (+1 к вашему другу).

Я сделал простой «конвертировать» файл со следующим:

for F in `find /home/cyrex/Desktop/mom/$1 -type f -name "*.lwp"`
do
soffice --headless --convert-to doc --outdir /home/cyrex/work/$2 $F
done

Он просто захватывает 2 переменные: ту, из которой я получаю документы, и ту, куда я отправляю их. Что-то вроде:

./convert inmuno/vph/2007-2009/2007 vph/2007

это будет захватывать все в / home / cyrex / Desktop / mom / inmuno / vph / 2007-2009 / 2007, преобразовывать это в DOC и затем отправлять to /home/cyrex/work/vph/2007.

Как я уже сказал, это наполовину запутанный ответ, который может помочь кому-то еще, пока не будет получен правильный ответ, используя только команду libreoffice / soffice.

0
ответ дан 2 August 2012 в 21:50

Похоже на сценарий использования bash-скрипта:)
Я использовал 'unoconv', потому что LO всегда возвращает true , даже когда возникает ошибка.

  • Загрузите связанный файл и назовите его «lo_convert.sh»
  • Сделайте его исполняемым chmod +x lo_convert.sh
  • Укажите dir файла и выходной формат (см. Инструкции скрипта) [ 119]
  • Запустить скрипт ./lo_convert.sh
  • готово

скачать / просмотреть:

lo_convert.sh

[ 1114] PS: не мог понять, как вставить код напрямую (странный синтаксис ...)

0
ответ дан 2 August 2012 в 21:50

, пожалуйста, установите libreoffice-dbg и gdb и запустите: gdb /usr/lib/libreoffice/program/soffice.bin, затем введите set args --headless --convert-to doc --outdir /home/cyrex/work/biopsias/2007 ${insert all files here}. Говоря о том, что, может быть, вы просто используете максимальную длину командной строки Linux? ulimit -s BIGMUMBER может помочь некоторым, но, в конце концов, вы, вероятно, окажетесь на некотором пределе. В этом случае вы должны использовать UNO API из скрипта или даже затвора написать небольшую программу StarBasic, которая делает то, что вы хотите.

Редактировать: Вам, вероятно, следует сойти с apt-get install unoconv, которому вы можете передать строку соединения (-c), чтобы использовать работающий экземпляр LibreOffice. Таким образом: Запустите LibreOffice без головы и принимайте удаленные подключения. Затем используйте unoconv для удаленного запуска LibreOffice для конвертации. Поскольку вы повторно используете один и тот же экземпляр, у вас не должно быть задержек при запуске приложения при использовании xargs для одновременной выдачи ~ 200 документов в LibreOffice.

0
ответ дан 2 August 2012 в 21:50

Другие вопросы по тегам:

Похожие вопросы: