web-dev-qa-db-ja.com

ODTをPDFに自動変換

Libreオフィスでいくつかのドキュメントを作成していますが、常に.pdfとして送信する必要があります。

しかし、pdfとしてエクスポートするのを忘れるたびに、ドキュメントを保存するたびに.odtドキュメントをpdfに自動変換する方法はありますか?

私は約4つのドキュメントしか持っていないので、それらに変更を加え続けています。そのため、毎回変更を加えてodtを保存し、その変更を対応するPDFファイルで更新する必要があります。

Ps:unoconvを使用してコマンドライン経由で変換できることを理解していますが、自動的に変換する方法はありますか?

別のPs:inotifyおよびinotify-toolsと呼ばれるものがあり、ファイルが変更されたときにイベントをトリガーするために使用できることがわかりました。しかし、私はそれを使用する方法がわかりません。

5
Gautam

Pyinotifyプロジェクトのコードを使用した簡単で汚い例[http://github.com/seb-m/pyinotify]

WATCHED_DIRをODTファイルを含むディレクトリに変更する必要があります。また、最初にunoconvをインストールすることを忘れないでください。

# 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 __== '__main__':
    handler = EventHandler()
    notifier = pyinotify.Notifier(wm, handler)
    wdd = wm.add_watch(WATCHED_DIR, mask, rec=True)        
    notifier.loop()

これをodtwatcher.pyとして保存し、バックグラウンドで実行します

python odtwatcher.py &

この拡張子 (Gnome-Shell/Quantal上のLibreOfficeでうまく機能します)を試してください:

MultiSaveを使用すると、選択したドキュメントをOpenDocument、MS Office、およびPDF形式で同時に保存できます。


MultiFormatSave は、Libreofficeの最近のリビジョンでより良く動作するように設計されたMultiSaveの新しい更新されたフォークです。

MultiFormatSaveを使用すると、Writer、Calc、またはImpressで選択したドキュメントをOpenDocument、MS Office、またはPDF形式で同時に保存できます。

StarXpert MultiSave-extensionから分岐

LibreOfficeのバージョンに適切なリリースを選択してください。 1.3.2 LO 3.5および3.6の場合。

3
Ogu

目的に応じて、コマンドラインからlibreofficeを実行することもできます。これにより、バッチ変換の利点が得られますが、単一ファイルも可能です。この例では、現在のディレクトリ内のすべてのODTファイルをPDFに変換します。

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

以下を使用して、コマンドラインオプションの詳細を取得します。

man libreoffice

注: bug 37531 のため、このコマンドが機能する前に、LibreOfficeの実行中のすべてのインスタンスを閉じる必要があります。

1
teknohelio

この投稿では、CUPSを使用して、コマンドラインからodtをpdfに変換する方法について説明します。

http://www.yamamoto.com.ar/blog/?p=5

ディレクトリからすべてのodtをpdfに実際にバッチ変換できるため、毎回pdfにエクスポートすることを覚えておく必要がなくなります!

お役に立てれば!

1
circumpolar