Erro ao converter milhares de documentos com o LibreOffice

6

Estou tentando converter vários milhares de documentos do LWP (Lotus Word Pro) para o DOC. Quando o processo de conversão chega a cerca de 250 (para 229, em alguns casos, 248 em outros, 245, etc., chega perto de 250), os documentos convertidos simplesmente param.

As linhas do terminal que estou usando para converter isso são:

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

ou

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

ambos funcionam, mas só chegam a cerca de 250. Tenho 60 mil documentos para converter e fazer 200 de cada vez levaria MUITO tempo.

Convertê-los para ODT também tem o mesmo problema.

Eu tenho o LibreOffice versão 3.5

UPDATE: Eu verifiquei se o arquivo 229 foi a causa. Também verifiquei se o arquivo a seguir ou o arquivo anterior foi a causa. Negativo. Eu até deletei os 20 arquivos anteriores antes da 250 e depois dos 20 depois. Mesmo problema. Eu também abri o arquivo 229, o arquivo 228 e o arquivo 230 com o LibreOffice sem nenhum problema. Apenas falha aleatoriamente antes dos 250.

UPDATE2: Tentei com outro grupo de arquivos completamente diferente, desta vez, DOC. Mais uma vez, chega a menos de ~ 250. Apenas no caso de ter algum problema, tenho o seguinte hardware:

CPU - Core i7 2600
RAM: 16GB
HDD: SSD de 120GB
MOBO: Intel DZ68DB
SO: Ubuntu 32 Bits

    
por Luis Alvarado 02.08.2012 / 18:51

3 respostas

2

Eu fiz o seguinte, mas não o marquei como resposta. Isso só resolve fazer toda a conversão. O problema ainda existe. Ele pegou uma idéia da resposta de Bjoern Michaelsen (+1 para seu amigo).

Eu fiz um arquivo "convert" simples com isto:

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

Ele pega apenas duas variáveis, aquela de onde eu recebo os documentos e aquela para a qual estou enviando os documentos. Algo como:

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

isso pode pegar tudo em / home / cyrex / Desktop / mom / inmuno / vph / 2007-2009 / 2007, convertê-lo em DOC e enviá-lo para /home/cyrex/work/vph/2007.

Como eu disse, é uma resposta incompleta, pode ajudar alguém até que uma resposta apropriada saia usando apenas o comando libreoffice / soffice.

    
por Luis Alvarado 02.08.2012 / 21:08
3

instale libreoffice-dbg e gdb e execute: gdb /usr/lib/libreoffice/program/soffice.bin e, em seguida, insira set args --headless --convert-to doc --outdir /home/cyrex/work/biopsias/2007 ${insert all files here} . falando de que talvez você esteja apenas atingindo o comprimento máximo de linha de comando do linux? Um ulimit -s BIGMUMBER pode ajudar alguns, mas no final você provavelmente acabará ainda em algum limite. Nesse caso, você deve usar a API UNO de um script ou até mesmo o obturador para escrever um pequeno programa StarBasic fazendo o que você deseja.

Edit: Você provavelmente deve usar o apt-get install unoconv , o qual você pode passar uma string de conexão ( -c ) para usar uma instância do LibreOffice em execução. Assim: Inicie o LibreOffice sem cabeça e aceitando conexões remotas. Em seguida, use unoconv para acionar remotamente o LibreOffice para converter. Como você está reutilizando a mesma instância, não deve haver atrasos na inicialização do aplicativo ao usar xargs para lançar ~ 200 documentos no LibreOffice por vez.

    
por Bjoern Michaelsen 02.08.2012 / 19:19
0

Parece um caso de uso para um script bash :)
Eu usei 'unoconv' porque LO sempre retorna true , mesmo quando ocorre um erro.

  • Faça o download do arquivo vinculado e nomeie-o como 'lo_convert.sh'
  • Torne-o executável chmod +x lo_convert.sh
  • Especifique o diretório do arquivo e o formato de saída (consulte as instruções do script)
  • Execute o script ./lo_convert.sh
  • concluído

download / visualização:

lo_convert.sh

PS: não conseguiu descobrir como inserir o código diretamente (sintaxe estranha ...)     
por Paradiesstaub 02.08.2012 / 22:32