麒麟系统播放 pptx

目录

[python 操作 LibreOffice 控制pptx 一页一页播放](#python 操作 LibreOffice 控制pptx 一页一页播放)

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

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

[1. 启动 LibreOffice UNO 服务](#1. 启动 LibreOffice UNO 服务)

[2. Python 控制播放uno安装方法:](#2. Python 控制播放uno安装方法:)

运行效果

[wps 播放ppt 收费,免费一个月](#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 监听端口:

bash 复制代码
libreoffice --impress --accept="socket,host=localhost,port=2002;urp;" --norestore --nologo &
bash 复制代码
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

python 复制代码
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