Esempio n. 1
0
 def wrapper():  # LibreOfficeをバックグラウンドで起動してコンポーネントテクストとサービスマネジャーを取得する。
     ctx = None
     try:
         ctx = officehelper.bootstrap()  # コンポーネントコンテクストの取得。
     except:
         pass
     if not ctx:
         print("Could not establish a connection with a running office.")
         sys.exit()
     print("Connected to a running office ...")
     smgr = ctx.getServiceManager()  # サービスマネジャーの取得。
     if not smgr:
         print( "ERROR: no service manager" )
         sys.exit()
     print("Using remote servicemanager\n") 
     try:
         func(ctx, smgr)  # 引数の関数の実行。
     except:
         traceback.print_exc()
     # soffice.binの終了処理。これをしないとLibreOfficeを起動できなくなる。
     desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
     prop = PropertyValue(Name="Hidden",Value=True)
     desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, (prop,))  # バックグラウンドでWriterのドキュメントを開く。
     terminated = desktop.terminate()  # LibreOfficeをデスクトップに展開していない時はエラーになる。
     if terminated:
         print("\nThe Office has been terminated.")  # 未保存のドキュメントがないとき。
     else:
         print("\nThe Office is still running. Someone else prevents termination.")  # 未保存のドキュメントがあってキャンセルボタンが押された時。
Esempio n. 2
0
def connect():  # LibreOfficeをバックグラウンドで起動してコンポネントテクストを取得する。
    ctx = None
    try:
        ctx = officehelper.bootstrap()
        if ctx:
            print("Connected to a running office ...")
        return ctx
    except:
        pass
    return None
Esempio n. 3
0
		def wrapper():  # LibreOfficeをバックグラウンドで起動してコンポーネントテクストとサービスマネジャーを取得する。
			try:
				ctx = officehelper.bootstrap()  # コンポーネントコンテクストの取得。
			except:
				print("Could not establish a connection with a running office.", file=sys.stderr)
				sys.exit()
			print("Connected to a running office ...")
			smgr = ctx.getServiceManager()  # サービスマネジャーの取得。
			print("Using {} {}".format(*_getLOVersion(ctx, smgr)))  # LibreOfficeのバージョンを出力。
			return func(ctx, smgr)  # 引数の関数の実行。