ラベル LibreOffice の投稿を表示しています。 すべての投稿を表示
ラベル LibreOffice の投稿を表示しています。 すべての投稿を表示

2016年6月19日日曜日

全ての LibreOffice Draw の .odg ファイルを make コマンドで一括で .png ファイルに変換

環境

  • Ubuntu 14.04 Server

パッケージインストール

$ sudo apt-get install libreoffice
$ sudo apt-get install fonts-takao-gothic
$ sudo apt-get install make

takao-gothic フォントをインストールして使えるようにしたので、Draw ドキュメントの日本語は全て takao-gothic にしておきます。 (takao-gothic 以外のフォントの日本語は文字化けするかもしれないです。)

odg ファイルと同じディレクトリに Makefile 作成

$ cat Makefile
.SUFFIXES: .odg .png
.odg.png:
    /usr/bin/loffice --headless --convert-to png $<

odgfiles:=$(wildcard *.odg)
pngfiles=$(odgfiles:.odg=.png)

all: $(pngfiles)

make 前のカレントディレクトリには作成した png 変換前の odg ファイルと Makefile があります。

$ tree -a
.
├── Makefile
├── test1.odg
├── test2.odg
└── test3.odg

0 directories, 4 files

make 実行

$ make

変換された png ファイルができました。

$ tree -a
.
├── Makefile
├── test1.odg
├── test1.png
├── test2.odg
├── test2.png
├── test3.odg
└── test3.png

0 directories, 7 files

2015年9月1日火曜日

パスワードでロックされた LibreOffice Writer ファイルをスクリプトで他のフォーマットに変換

ファイルがパスワードでロックされていない場合は $ unoconv --format html NotPassworded.odt や $ loffice --headless --convert-to html NotPassworded.odt で変換することができます。 (この場合は NotPassworded.odt を html フォーマットに変換しています。)

しかし、パスワードでロックされている場合、調べた限りでは unoconv や loffice コマンドではファイルを開くことができないようですが、python の uno モジュールを使うとパスワードでロックされたファイルにもアクセスできるようなので試してみました。


環境
Ubuntu 14.04 (Trusty Tahr) Server

unoconv をインストール

$ sudo apt-get install unoconv

unoconv をリスナーとして開始

$ unoconv --listener &

以下実行

$ python3
>>> import uno
>>> from com.sun.star.beans import PropertyValue
>>>
>>> oContext = uno.getComponentContext()
>>> oResolver = oContext.ServiceManager.createInstanceWithContext('com.sun.star.bridge.UnoUrlResolver', oContext)
>>> oCtx = oResolver.resolve('uno:socket,host=127.0.0.1,port=2002;urp;StarOffice.ComponentContext')
>>> oSmgr = oCtx.ServiceManager
>>> oDesktop = oSmgr.createInstanceWithContext('com.sun.star.frame.Desktop', oCtx)
>>>
>>> oPropertyPasswd = PropertyValue()
>>> oPropertyPasswd.Name = 'Password'
>>> oPropertyPasswd.Value = 'hogehoge'
>>> oDoc = oDesktop.loadComponentFromURL('file:////home/worker/Desktop/Passworded.odt', '_blank', 0, (oPropertyPasswd,))
>>> assert oDoc != None
>>>
>>> oPropertyFilterName = PropertyValue()
>>> oPropertyFilterName.Name = 'FilterName'
>>> oPropertyFilterName.Value = 'HTML (StarWriter)'
>>> oDoc.storeAsURL('file:////home/worker/Desktop/Converted.html', (oPropertyFilterName,))
>>> oDoc.dispose()

パスワードでロックされた Passworded.odt から html に変換された Converted.html が作成されました。