ファイルがパスワードでロックされていない場合は $ 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 が作成されました。
0 件のコメント:
コメントを投稿