【问题标题】:How python-uno can manipulate libreoffice-calc with pipe?python-uno 如何使用管道操作 libreoffice-calc?
【发布时间】:2020-12-19 04:02:53
【问题描述】:

Python uno 可以通过 socket 与 libreoffice-calc 通信,常用的方法是从 shell 启动 libreOffice-calc:

soffice --calc --accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager"

soffice 可以用 socket 和 port:2002 与 python-uno 通信。

sudo netstat -anp  |grep  soffice
tcp        0      0 127.0.0.1:2002          0.0.0.0:*               LISTEN      3115/soffice.bin    
unix  2      [ ACC ]     STREAM     LISTENING     45712    3115/soffice.bin     /tmp/OSL_PIPE_1000_SingleOfficeIPC_7fb3858dfd518f4aa054b3e7cf720
unix  3      [ ]         STREAM     CONNECTED     45702    3115/soffice.bin     
unix  3      [ ]         STREAM     CONNECTED     45716    3115/soffice.bin    

然后你可以打开一个python shell,import uno来操作calc

现在我从菜单中打开一个calc

当你从菜单启动 soffice 时:

sudo netstat -anp  |grep  soffice
unix  2      [ ACC ]     STREAM     LISTENING     49386    3200/soffice.bin     /tmp/OSL_PIPE_1000_SingleOfficeIPC_7fb3858dfd518f4aa054b3e7cf720
unix  3      [ ]         STREAM     CONNECTED     49390    3200/soffice.bin     
unix  3      [ ]         STREAM     CONNECTED     48919    3200/soffice.bin  

soffice无法与socket通信python-uno,端口:2002没有打开。

lilbreoffice-calc 从菜单启动时如何使用 python-uno 操作calc

【问题讨论】:

  • 问题是你想从菜单启动 LibreOffice Calc,参数和你从 shell 启动时一样吗?
  • 没有相同的参数,那怎么修改呢?

标签: python uno communicate


【解决方案1】:

这不是一个真正的 Python 问题,但您需要修改 LibreOffice Calc 的 .desktop 文件并添加配置参数。 例如,您可以打开一个终端窗口并输入:

sudo nano /usr/share/applications/libreoffice-calc.desktop

然后找到可能看起来像这样的行 Exec: libreoffice --calc %U 添加参数:

libreoffice --calc --accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager" %U

请务必在命令末尾保留 %U 以使其正常运行。

保存,现在应该可以使用了!

【讨论】:

  • 感谢您的关注,edit calc.desktop 只是绕过问题,而不是直接解决。
  • 如果您想通过 UNO 与 LibreOffice 交互,您必须以这种方式启动应用程序。出于安全原因,它默认不监听任何资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多