PowGrade.FileConverters.PptxToPpt
0.1.0
dotnet add package PowGrade.FileConverters.PptxToPpt --version 0.1.0
NuGet\Install-Package PowGrade.FileConverters.PptxToPpt -Version 0.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PowGrade.FileConverters.PptxToPpt" Version="0.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PowGrade.FileConverters.PptxToPpt" Version="0.1.0" />
<PackageReference Include="PowGrade.FileConverters.PptxToPpt" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PowGrade.FileConverters.PptxToPpt --version 0.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: PowGrade.FileConverters.PptxToPpt, 0.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PowGrade.FileConverters.PptxToPpt@0.1.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PowGrade.FileConverters.PptxToPpt&version=0.1.0
#tool nuget:?package=PowGrade.FileConverters.PptxToPpt&version=0.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
PowGrade.FileConverters.PptxToPpt
将 .pptx 转换为 .ppt 的纯 .NET 实现,包含类库与 CLI 两种使用方式。
- 目标框架:
net8.0、netstandard2.1 - 运行依赖:
PowGrade.FileConverters.Core(用于统一转换器接口) - 许可证:MIT
当前定位
项目已经具备“可用的兼容模板转换链路”,重点是让输出 .ppt 在传统环境中可见可打开,并优先保障:
- 可见标题/正文文本
- 单页图片模板可视化
- 超过模板容量时的告警、报错、分片输出
- CLI 批处理和报告输出
该项目不是“全保真 PPTX->PPT 渲染器”,而是“兼容模板驱动 + 自定义二进制载荷”的实现。
代码结构
src/
├─ PowGrade.FileConverters.PptxToPpt/
│ ├─ Cff/ # CFBF 容器写入
│ ├─ Conversion/ # 转换编排、溢出策略、批处理、报告
│ ├─ Ppt/ # PPT 记录构建 + 兼容模板写入
│ └─ Pptx/ # PPTX 解析(关系链、主题、媒体、注释等)
├─ PowGrade.FileConverters.PptxToPpt.Cli/
│ └─ Program.cs # 命令行入口
└─ PowGrade.FileConverters.PptxToPpt.Tests/
└─ *.cs # 单元/集成/CLI/互操作测试
功能完成度评估
以下为基于源码与测试的完成度评估(164 个测试通过):
| 模块 | 完成度 | 说明 |
|---|---|---|
| 转换主流程(单文件) | 85% | 输入校验、输出写入、覆盖控制、可同步/异步调用 |
| 转换主流程(批处理) | 80% | 并发批转、跳过/失败统计、JSONL 批次事件、可重试失败识别 |
| PPTX 关系解析 | 80% | 支持 slide/layout/master/theme、notes、comments、chart/diagram 关系载入 |
| 可见文本提取 | 75% | 占位符继承、正文聚合、注释合并、段落级项目符号与部分编号 |
| 图像处理 | 70% | 关系图像提取、单页图片模板变体匹配、几何有效性检查 |
| 图形对象映射 | 60% | sp/grpSp/cxnSp/pic/graphicFrame 基本转换,包含位移/旋转/缩放字段 |
| 图表/表格/SmartArt | 40% | 以“文本提取”方式降级,不是结构化对象保真渲染 |
| 兼容输出策略 | 90% | 5 页容量限制、warn/error/split、分片命名与报告完善 |
| CLI | 85% | 参数较完整,错误提示清晰,支持目录输入 |
| 测试体系 | 85% | 覆盖广;互操作测试在无 Office 环境下自动跳过 |
已实现能力
- 读取 PPTX 关系图并解析:
- 幻灯片、版式、母版、主题
- 图片媒体
- 备注页、批注作者
- 图表/SmartArt 相关 XML(用于文本提取)
- 构建 PPT 输出时支持:
- 文本段落与 run 级样式(字体、字号、粗斜体、下划线、颜色)
- 基础项目符号与有限自动编号前缀
- 形状/组合/连接线基础记录及变换字段写入
- 图片关系嵌入和可见图槽映射
- 兼容容量策略:
- 模板可见容量上限 5 页
warn(告警截断)/error(直接失败)/split(分片输出)- 分片输出支持文本或 JSONL 报告
- CLI 参数:
--comment-merge--overflow--split-name--split-pad--split-size--split-report--split-report-file--batch-concurrency--batch-retries--batch-retry-delay-ms
缺失与不完整功能
1) 保真度相关(核心差距)
- 不是全保真 PPT 渲染:
- 图表、表格、SmartArt 目前主要是提取可见文本,非结构保真对象
- 动画、切换、音视频、OLE、宏、批注气泡样式等未实现
- 图形语义不完整:
- 仅写入基础几何/变换字段,复杂填充、描边、路径、效果支持不足
- 母版/版式继承为“文本可见优先”策略,非完整版式复刻
2) 工程化与产品化差距
- CLI 对通配符字符串本身不做解析(依赖 shell 展开或目录遍历)
- 批处理已支持并发与重试参数,但尚缺少更细粒度的“按错误类型策略化重试”
改进计划(建议优先级)
P0(必须)
- 修正
RepositoryUrl与发布元数据,避免包信息误导 - 将测试项目纳入解决方案,保证
dotnet test一键覆盖 - 在 README 与 CLI 帮助中明确“兼容模板容量=5 页”和降级策略
- 增加回归基线:典型中文/图像/分片场景的 golden 文件校验
P1(高价值)
- 提升图表/表格/SmartArt 从“文本降级”到“结构化映射”
- 完善图形属性:填充、线型、透明度、路径与部分效果
- 批处理增强:并发度参数、失败重试策略、汇总报告字段扩展
- 增加性能基准(大文件、多文件、内存占用)
P2(中长期)
- 动画/切换的近似映射
- 媒体与 OLE 能力增强
- 密码保护文档的检测与处理策略
- 更完整的 Office 互操作验证矩阵
CLI 使用
# 单文件转换
dotnet run --project src/PowGrade.FileConverters.PptxToPpt.Cli -- input.pptx
# 指定输出目录并覆盖
dotnet run --project src/PowGrade.FileConverters.PptxToPpt.Cli -- -o out -f input.pptx
# 目录批量转换(递归查找 *.pptx)
dotnet run --project src/PowGrade.FileConverters.PptxToPpt.Cli -- D:\pptx-folder
# 超过模板容量时分片输出
dotnet run --project src/PowGrade.FileConverters.PptxToPpt.Cli -- --overflow split --split-size 3 input.pptx
# 输出 JSONL 分片报告
dotnet run --project src/PowGrade.FileConverters.PptxToPpt.Cli -- --overflow split --split-report jsonl --split-report-file reports\split.jsonl input.pptx
# 批处理并发与重试(需要配合 -o 指定统一输出目录)
dotnet run --project src/PowGrade.FileConverters.PptxToPpt.Cli -- -o out --batch-concurrency 4 --batch-retries 2 --batch-retry-delay-ms 150 D:\pptx-folder
代码调用示例
using PowGrade.FileConverters.PptxToPpt.Conversion;
var converter = new Converter();
converter.Convert(
inputPath: "demo.pptx",
outputPath: "demo.ppt",
overwrite: true,
compatibilityOverflowMode: CompatibilityOverflowMode.Split,
splitOutputChunkSize: 5);
构建与测试
# 构建类库 + CLI(当前 slnx 仅包含这两个项目)
dotnet build src/PowGrade.FileConverters.PptxToPpt.slnx
# 运行测试(需要显式指定测试项目)
dotnet test src/PowGrade.FileConverters.PptxToPpt.Tests/PowGrade.FileConverters.PptxToPpt.Tests.csproj
已知限制
- 可见模板容量默认 5 页(可通过 split 输出多个 ppt)
- 优先保障“可打开、可见文本、可见图片”,非全要素保真
- 在无 Office 环境下,互操作相关测试会跳过
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- PowGrade.FileConverters.Core (>= 0.1.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on PowGrade.FileConverters.PptxToPpt:
| Package | Downloads |
|---|---|
|
PowGrade.FileConverters.PptxToPpt.Cli
PPTX to PPT converter CLI |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 149 | 4/30/2026 |