私はオフィス内から通常のオフィスとPythonの両方のマクロを実行できることを確認しましたが、こんにちは世界1)をコマンドラインから起動します。libreoffice - Gnu/Linuxコマンドラインから相互参照を挿入するためのマクロ(python)を実行する
私は、コマンドラインからオープンオフィスのマクロを実行する方法をGoogleで検索して、ここで他の回答を見て、私はまだ完全には明らかではないよいます
https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=8232 が使用することを示唆している:
office writer.odt "macro://Standard.Module1.Macro1()"
私も見てきました:
office "macro://Standard.Module1.Macro1()"
writer.odt
どちらの方法でも、文書を開き、マクロを実行したりエラーを報告したりすることはありません。
一方、How to call an existing LibreOffice python macro from a python script は、ポートでリスンを受信し、それを介して通信することを提案しています。
私はそこまで私はまだ私はコンテキストにRHEL7を使用してい
(私の他の質問 asciidoc: is there a way to create an anchor that will be visible in libreoffice writer?ごとに)アンカーを挿入する方法を説明しますAPIドキュメントを見つける必要が得ることができる場合。オフィス基本的なマクロと連携
更新
oowriter "foo.odt" macro:///Standard.Module1.addXref
1つの問題は、表示するデバッグ情報が見つかりません。どこにログファイルがありますか?
別の問題は、使用するPythonのバージョンです。 RHELパッケージは、Python 2.7のサイトパッケージをインストールします。
>rpm -q --whatprovides /usr/bin/writer libreoffice-writer-4.3.7.2-5.el7_2.1.x86_64 >rpm -ql libreoffice-pyuno-4.3.7.2-5.el7_2.1 ... /usr/lib64/python2.7/site-packages/uno.py
Libreoffice5.1は、ディストリビューションと3.5が含まれています
>/opt/libreoffice5.1/program/python --version Python 3.5.0
ので、既知のバージョンとのpythonのペア知らバージョンことを私はハロー世界のPythonの例を探していますから開始しますオフィス。好ましくは、上の2つのいずれか(ライター4.3.7 &、Python 2.7?またはライター5.1 &、Python 3.5)。
アップデート2
office5でインストールようpython3.5を使用します。1私は、次を使用して、ハローワーキングの世界を持っている:
import uno
# get the uno component context from the PyUNO runtime
localContext = uno.getComponentContext()
# create the UnoUrlResolver
resolver = localContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localContext)
# connect to the running office
ctx = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
smgr = ctx.ServiceManager
# get the central desktop object
desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop",ctx)
# access the current writer document
model = desktop.getCurrentComponent()
# access the document's text property
text = model.Text
# create a cursor
cursor = text.createTextCursor()
# insert the text into the document
text.insertString(cursor, "Hello World", 0)
これは、経由して、オープンオフィスのいずれかのバージョンで動作します:
/usr/bin/oowriter --accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager"
だから、最後の部分は、相互参照を追加することです。
oowriter "foo.odt"マクロ:///Standard.Module1.addXrefは、オフィスの基本マクロで動作します。 –
(http://stackoverflow.com/questions/37611030/how-do-i-check-for-broken-internal-links-in-star-basic)にリンクされている 'coool'スクリプトは面白いですが、使用するPythonのバージョンを指定します。 2.7.5ではなく3.x –
'coool'スクリプトが動作するように、私はコードをダウンロードし、' configparse'のすべてのものをコメントアウトし、Python 3ライブラリを使うように更新しました。それは私に約1時間かかりました。 –