Auto converter odt para pdf

5

Estou criando alguns documentos no Libre Office e tenho que enviá-los sempre como .pdf .

mas toda vez que eu esqueço de exportá-lo como pdf, existe alguma maneira de converter automaticamente o documento .odt em pdf toda vez que eu salvar o documento?

Eu tenho apenas cerca de 4 docs, eu continuo fazendo alterações neles, então cada vez que eu faço uma alteração e salvo o odt eu preciso que essa mudança seja atualizada no arquivo pdf correspondente.

Ps: Eu entendo que unoconv pode ser usado para converter via linha de comando, mas existe uma maneira de fazer isso automaticamente?

Outro Ps: Descobri que há algo chamado inotify e inotify-tools e que pode ser usado para acionar eventos quando um arquivo é alterado. Mas não tenho ideia de como usá-lo.

    
por Gautam 13.10.2011 / 15:15

4 respostas

3

Um exemplo rápido e sujo usando o código do projeto pyinotify [http://github.com/seb-m/pyinotify]

Você precisará alterar o WATCHED_DIR para o diretório que contém os arquivos ODT. Lembre-se também de instalar o unoconv primeiro.

# Notifier example from tutorial
#
# See: http://github.com/seb-m/pyinotify/wiki/Tutorial
#
# odtwatcher.py

import os
import pyinotify
import subprocess

WATCHED_DIR = '/tmp/test'

wm = pyinotify.WatchManager()  # Watch Manager
mask = pyinotify.IN_MODIFY

class EventHandler(pyinotify.ProcessEvent):
    def process_IN_MODIFY(self, event):
        fname = event.pathname            
        if os.path.splitext(fname)[1] == '.odt':
            print 'MODIFIED: ', fname
            args = ['unoconv', '-f', 'pdf', fname]
            try:
                subprocess.Popen(args)
            except OSError as e:
                print 'Could not convert file %s to PDF. Error %s' % (fname, str(e))

if __name__ == '__main__':
    handler = EventHandler()
    notifier = pyinotify.Notifier(wm, handler)
    wdd = wm.add_watch(WATCHED_DIR, mask, rec=True)        
    notifier.loop()

Salve isso como odtwatcher.py e execute-o em segundo plano

python odtwatcher.py &
    
por Vimalkumar Velayudhan 13.10.2011 / 19:57
3

Experimente esta extensão (funciona bem com o LibreOffice no Gnome-Shell / Quantal):

MultiSave enables you to save simultaneoulsly a document in the OpenDocument, MS Office and/or PDF formats as you choose.

MultiFormatSave é uma nova bifurcação atualizada do MultiSave projetada para funcionar melhor com revisões recentes do Libreoffice:

MultiFormatSave enables you to save simultaneously a document in the OpenDocument, MS Office and/or PDF formats as you choose for Writer, Calc or Impress

Forked from the starXpert MultiSave-extension

Certifique-se de escolher o release apropriado para sua versão do LibreOffice, por exemplo 1.3.2 para o LO 3.5 e 3.6.

    
por Ogu 30.10.2012 / 21:23
1

Este post explica como converter odt para pdf a partir da linha de comando usando o CUPS.

link

Você pode, na verdade, converter em lote todo o odt para pdf a partir de um diretório, para que isso realmente evite que você tenha que se lembrar de exportar para o pdf a cada momento!

Espero que isso ajude!

    
por circumpolar 13.10.2011 / 17:47
1

Você também pode executar o libreoffice a partir da linha de comando para o seu propósito. Isso lhe dá a vantagem da conversão em lote, mas também são possíveis arquivos únicos. Este exemplo converte todos os arquivos ODT no diretório atual para PDF:

libreoffice --headless --convert-to pdf *.odt

Obtenha mais informações sobre opções de linha de comando com:

man libreoffice

Nota: Devido ao bug 37531 , você tem que fechar todos executando instâncias do LibreOffice antes que este comando funcione.

    
por teknohelio 13.01.2014 / 12:38