feat: PowerPoint preview: draw pie, doughnut and horizontal bar charts

这是在 Open WebUI 中预览由 python-pptx 等方式生成、包含饼图、圆环图或水平条形图的 PowerPoint 文件时出现的现象。它属于预览功能尚未支持这些图表类型的功能请求,并非 PPTX 文件损坏。优先确认文件在其他软件中能否正常显示,再判断是否为预览限制。

快速结论:这是在 Open WebUI 中预览由 python-pptx 等方式生成、包含饼图、圆环图或水平条形图的 PowerPoint 文件时出现的现象。它属于预览功能尚未支持这些图表类型的功能请求,并非 PPTX 文件损坏。优先确认文件在其他软件中能否正常显示,再判断是否为预览限制。

适用环境:Open WebUI v0.12.3 及 dev 分支(提交 8fa77c8282b10e7de36863c4df6583a62a55354c);通过 pip / uv(uv tool install open-webui)安装;服务端 Debian 13,浏览器端 Linux + Chromium 151;Ollama 未参与。

最快修复方案:暂无确认的一步修复方案。Issue 中给出的临时办法是下载该文件,改用 PowerPoint 或 LibreOffice 打开查看,这些软件会按文件内容显示全部图表。

注意事项:Issue 讨论中已明确判定为功能请求(Not a bug. Feature request.),不是现有图表的渲染缺陷。没有证据表明调整环境、依赖或配置可以解决;新增图表类型的绘制能力需要等待 Open WebUI 预览功能更新,Issue 中仅表示已在 dev 处理,未给出具体版本。

问题场景

用户在聊天中上传或从文件导航器中打开一个 PowerPoint(.pptx)文件,并切换到 Preview 标签查看。文件通过 python-pptx 生成,包含饼图(c:pieChart)、圆环图(c:doughnutChart)和水平条形图(<c:barDir val="bar"/>)。预览中饼图和圆环图的图表区域完全空白;水平条形图被画成垂直柱状图。与 LibreOffice 或 PowerPoint 中的显示结果对比,差异明显。该问题可追溯到 #32873,其中标题对齐问题已由 #32876 修复,但上述两个图表问题在 dev 分支上仍存在。

报错原文

feat: PowerPoint preview: draw pie, doughnut and horizontal bar charts

浏览器控制台没有报错输出。问题表现为预览渲染结果与文件实际内容不一致,而不是抛出异常。

原因分析

根据 Issue 中对 src/lib/utils/pptxToHtml.ts 的分析,原因集中在 renderChart()(L796-L802)的实现范围:

  • 该函数只识别 c:barChart 和 c:lineChart 两种图表类型,其他类型会返回 false(L1033),因此饼图、圆环图等连图表占位框都不会绘制,幻灯片上看起来像图表缺失。
  • 对于所有 c:barChart,函数一律按垂直柱状图绘制,从不读取 c:barDir,所以设置 barDir="bar" 的水平条形图被错误画成垂直柱。
  • area、scatter、radar 等其他图表类型同样不受支持,也会留下空白区域。

维护者在评论中指出,这不是现有图表的故障,文件本身是完好的,问题在于预览缺少对应图表类型的绘制逻辑,因此归类为功能请求。

环境排查

  • 确认 Open WebUI 版本:v0.12.3 与 dev(8fa77c8282b10e7de36863c4df6583a62a55354c)均复现,说明不是单一版本回归。
  • 确认安装方式是否为 pip / uv(uv tool install open-webui),以判断是否与其他部署方式存在差异——Issue 未提供其他安装方式的对比证据。
  • 确认浏览器与操作系统环境(Issue 中为 Linux + Chromium 151),并检查浏览器控制台是否真的没有报错。
  • 确认 PPTX 文件本身是否正常:用 PowerPoint 或 LibreOffice 打开同一文件,核对图表是否完整显示。
  • 确认预览内容是否来自 pptxToHtml.ts 的解析路径(Issue 中通过 pptxToImages() 复现渲染结果)。

解决步骤

  1. 先从文件侧排除问题:在 PowerPoint 或 LibreOffice 中打开同一个 .pptx,确认饼图、圆环图和水平条形图均正常显示。若正常,说明文件无损,问题在预览端。
  2. 在 Open WebUI 中下载该文件,用上述桌面软件查看,作为临时绕过方案;这是 Issue 中明确给出的 workaround。
  3. 不要尝试通过修改依赖、CUDA 或系统配置来修复,现有证据不支持这些方向。
  4. 如需在预览中直接查看这些图表,关注 Open WebUI 后续版本对 renderChart() 的更新;Issue 评论仅表示“Addressed in dev”,未提供一次性修复步骤。
  5. 若需要推动覆盖更多图表类型,可参考 Issue 正文建议:为不支持的图表类型增加回退占位框,避免幻灯片看起来像缺少图表。

验证方法

使用 Issue 中的 python-pptx 示例生成 charts.pptx,在 Open WebUI 的 Preview 标签中打开,并与 LibreOffice 或 PowerPoint 的显示结果逐一对比。若预览中出现饼图、圆环图,且 barDir="bar" 的图表以水平条形呈现,说明对应绘制能力已生效;在此之前,验证结果应表现为前两者空白、水平条形图被画成垂直柱,与 Issue 描述一致。

参考来源

open-webui/open-webui #32884

Open WebUI 文档:文件数据控制与预览说明

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 31125

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注