1

사무실 내에서 일반 사무실과 파이썬 매크로를 실행할 수 있다는 것을 확인했지만 여전히 실행 방법을 찾지 못했습니다. 안녕하세요?) 명령 줄에서.libreoffice - Gnu/Linux 명령 줄에서 상호 참조를 삽입하기위한 (python) 매크로 실행

내가 봤 여기에 다른 답변 보았다하지만, 난 여전히 명령 줄에서 오픈 오피스 매크로를 실행하는 방법을 완전히 명확하지 않다 않은 :

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

작품. 아직 파이썬 중 하나를 알아 내지 못했습니다.

하나의 문제는 내가 볼 디버그 정보를 찾을 수 없다는 것입니다. 로그 파일이 있습니까?

다른 문제는 사용할 파이썬 버전입니다. 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 그래서

이 시작을 그 쌍 알려진 버전 파이썬 알려진 버전 사무실. 바람직하게는 위의 두 가지 중 하나 (작가 4.3.7 & 파이썬 2.7? 또는 작가 5.파이썬 3.5). office5 설치로 python3.5를 사용

갱신 2

.(1) 나는 다음과 같은 사용하여 작업 안녕하세요 세계를 가지고 :

/usr/bin/oowriter --accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager"

그래서 마지막 부분은 상호 참조를 추가하는 것입니다

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) 

이를 통해 오픈 오피스의 두 버전에서 작동합니다.

답변

0

명령에 슬래시가 필요합니다. 이 우분투에 나를 위해 일한 :

My Macros & Dialogs/Standard에서 Module1라는 이름의 모듈이 메소드를 호출
lowriter "Untitled 1.odt" macro:///Standard.Module1.SayHello 

: 위의 방법은 기본 매크로 작동

Sub SayHello 
    MsgBox("Hello, World!") 
End Sub 

합니다. Python 매크로의 경우 표준 명령 줄 방법은 Office 수신 대기 인스턴스에 연결하는 것입니다. 경고 : 이것은 Office 내에서 실행하는 것보다 훨씬 (아마도 10 배) 느려질 것입니다.

당신이 제안한 링크는 우리가 여기서 필요한 것보다 더 복잡한 다른 파이썬 스크립트에서 파이썬 매크로를 호출하는 방법을 보여줍니다. 대신 연결 코드 (localContext = uno.getComponentContext()으로 시작)와 매크로 코드를 같은 스크립트에 넣으십시오. 스크립트에서 수행해야 할 작업의 예는 "익숙해지기 위해 먼저 Python 셸을 사용하여 재생"(http://christopher5106.github.io/office/2015/12/06/openoffice-libreoffice-automate-your-office-tasks-with-python-macros.html)을 참조하십시오.

지금까지 앵커를 만드는 등, 앵커 역할을 할 수 LibreOffice와 다른 객체가 있습니다 :

이 목록은 How do I check for broken internal links in Star Basic?에서 복사했습니다. 귀하의 다른 질문에서 당신은 또한 부러진 링크를 확인하는 것에 대해 물었습니다. 그래서 그 질문이 도움이되기를 바랍니다.

하이퍼 링크를 만드는 한 가지 방법은 일부 텍스트의 HyperLinkURL 속성을 편집하는 것입니다. 예를 들어 MyBookmark이라는 북마크가 있다고 가정 해 보겠습니다.

viewcursor = currentController.getViewCursor() 
viewcursor.HyperLinkURL = "#MyBookmark" 

EDIT : 다음 코드는 하이퍼 링크로 현재 선택된 텍스트 변경

사용 파이썬 버전 관해서를 현재 LibreOffice와 파이썬 3을 사용하고, 오픈 오피스 파이썬 2.

사용

디버깅 정보의 경우 기본 IDE에 검사 점을 설정할 수 있습니다. 파이썬의 경우 logging module을 사용합니다. OpenOffice에는 다양한 로그 파일이 있지만 일반적으로 도움이되지 않습니다.

파이썬 문제와 ​​관련하여 게시 한 링크를 사용해 보셨습니까? 그렇다면 얼마나 남았습니까?

많은 RHEL 예제를 찾지 못할 것이라고 생각합니다.먼저 Ubuntu와 같은 데스크탑 배포판에서 작업하고 RHEL에이 접근법을 적용하십시오.

+0

oowriter "foo.odt"매크로 : ///Standard.Module1.addXref는 office 기본 매크로와 함께 작동합니다. –

+0

(http://stackoverflow.com/questions/37611030/how-do-i-check-for-broken-internal-links-in-star-basic)에 링크 된'coool' 스크립트는 흥미롭지 만, 사용할 파이썬 버전을 나타냅니다. 2.7.5가 아닌 3.x –

+0

'coool' 스크립트가 작동하려면, 코드를 다운로드하고,'configparse' 모든 것을 주석 처리하고, 파이썬 3 라이브러리를 사용하도록 업데이트했습니다. 약 1 시간이 걸렸다. –

관련 문제