麒麟系统播放 pptx

发布于:2025-08-12 ⋅ 阅读:(12) ⋅ 点赞:(0)

目录

python 操作 LibreOffice 控制pptx 一页一页播放

1. 安装 LibreOffice(麒麟系统基于 Debian/Ubuntu)

2. 如果只想安装 PPT 播放/转换(Impress)

1. 启动 LibreOffice UNO 服务

2. Python 控制播放uno安装方法:

运行效果

wps 播放ppt 收费,免费一个月


python 操作 LibreOffice 控制pptx 一页一页播放

1. 安装 LibreOffice(麒麟系统基于 Debian/Ubuntu)

sudo apt update

sudo apt install libreoffice

这样会安装 LibreOffice 全家桶(Writer、Calc、Impress等)。


2. 如果只想安装 PPT 播放/转换(Impress)

sudo apt update

sudo apt install libreoffice-impress

打开pptx:

libreoffice --impress my.pptx

播放pptx

libreoffice --impress --show aaa.pptx

可以的,Python 可以通过 UNO(Universal Network Objects)接口 控制 LibreOffice,做到一页一页播放 PPTX。

思路是:

  1. 用 Python 连接 LibreOffice 的 UNO 服务。

  2. 加载 PPTX 到 Impress。

  3. 控制幻灯片切换(presentation.gotoNextSlide())。

  4. 可以结合 time.sleep() 实现定时翻页,也可以按逻辑随时翻页。


1. 启动 LibreOffice UNO 服务

麒麟 / Linux 下,先开一个 LibreOffice 监听端口:

libreoffice --impress --accept="socket,host=localhost,port=2002;urp;" --norestore --nologo &
libreoffice --impress --accept="socket,host=127.0.0.1,port=2002;urp;" /home/qilin/doc/aaa.pptx

这样 Python 才能通过 UNO 连接它。


2. Python 控制播放
uno安装方法:

pip uninstall uno
sudo apt remove python3-uno  # 先卸载旧版本,避免冲突
sudo apt install libreoffice python3-uno

import uno
import time
from com.sun.star.beans import PropertyValue

def connect_uno():
    local_ctx = uno.getComponentContext()
    resolver = local_ctx.ServiceManager.createInstanceWithContext(
        "com.sun.star.bridge.UnoUrlResolver", local_ctx)
    ctx = resolver.resolve(
        "uno:socket,host=127.0.0.1,port=2002;urp;StarOffice.ComponentContext")
    return ctx

def control_ppt():
    ctx = connect_uno()
    smgr = ctx.ServiceManager
    desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)

    # 直接在脚本中打开文档,避免 doc=None
    url = uno.systemPathToFileUrl("/home/qilin/doc/aaa.pptx")
    doc = desktop.loadComponentFromURL(url, "_blank", 0, ())

    # 获取 Presentation 对象
    presentation = doc.getPresentation()

    # 设置为窗口模式(不是全屏)
    presentation.IsFullScreen = True
    presentation.StartWithNavigator = False  # 不显示导航器

    # 开始放映
    presentation.start()

    time.sleep(1)  # 等放映启动

    # 获取 SlideShowController
    slide_show = presentation.getController()

    # 翻页
    time.sleep(2)
    slide_show.gotoNextSlide()
    time.sleep(2)
    slide_show.gotoNextSlide()

if __name__ == "__main__":
    control_ppt()


运行效果

  • LibreOffice 会隐藏窗口启动(Hidden=True),你也可以改成 Hidden=False 来可视化播放。

  • controller.gotoNext() 就是翻到下一页,支持 gotoPrevious()jumpToFirstSlide() 等方法。

  • 你可以替换 time.sleep() 用别的逻辑,比如外部信号控制翻页。

wps 播放ppt 收费,免费一个月

wpp /path/to/your.pptx
如果要直接全屏播放,可以加启动参数(不同版本可能略有差异):
wpp --show /path/to/your.pptx