PowGrade.FileConverters.PptToPptx
0.1.0
dotnet add package PowGrade.FileConverters.PptToPptx --version 0.1.0
NuGet\Install-Package PowGrade.FileConverters.PptToPptx -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.PptToPptx" 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.PptToPptx" Version="0.1.0" />
<PackageReference Include="PowGrade.FileConverters.PptToPptx" />
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.PptToPptx --version 0.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: PowGrade.FileConverters.PptToPptx, 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.PptToPptx@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.PptToPptx&version=0.1.0
#tool nuget:?package=PowGrade.FileConverters.PptToPptx&version=0.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
PowGrade.FileConverters.PptToPptx
将 PowerPoint 97-2003 二进制格式(.ppt)转换为 OpenXML(.pptx / .pptm)的 .NET 库与 CLI 工具。
项目组成
src/PowGrade.FileConverters.PptToPptx:核心转换库(net8.0;netstandard2.1)src/PowGrade.FileConverters.PptToPptx.Cli:命令行工具(ppt2pptx)tests/PowGrade.FileConverters.PptToPptx.Tests:xUnit 测试集
当前完成度(基于代码与测试现状)
说明:以下是“工程可用性”视角,不是“与 Office 完全像素级一致性”视角。
| 能力域 | 完成度 | 现状 |
|---|---|---|
基础转换主流程(读 .ppt → 写 .pptx) |
90% | 主链路稳定,支持同步/异步、超时、取消、进度、结果统计 |
| 文本与段落 | 70% | 常规文本可用;高级排版(复杂项目符号、细粒度字距/特效)不完整 |
| 图片与形状 | 70% | 常见图像与基础形状可用;复杂 Escher 属性、3D、部分几何映射不足 |
| 超链接 | 75% | 文本/形状链接与动作链接可导出;无效目标和边缘场景仍存在降级 |
| 图表 | 65% | 可解析常见图表与系列;复杂格式与兼容细节仍有限 |
| 表格 | 45% | 以启发式重建为主,合并单元格/复杂边框保真较弱 |
| 动画与切换 | 40% | 基础动画/过渡可导出;复杂时序、路径、触发链路有明显缺口 |
| OLE / 嵌入媒体 | 50% | 具备提取与打包;媒体播放行为与 OLE 可编辑行为保真不足 |
| VBA 宏打包 | 60% | 可携带 vbaProject.bin 并输出 .pptm;宏语义兼容不保证 |
| SmartArt | 65% | 已有原生 diagram part 写出与回退策略;复杂布局仍会差异 |
| 批量转换与报告 | 80% | 顺序/并行批量可用;批量报告细节字段完整性可继续增强 |
| 工程质量(自动化验证) | 85% | 测试覆盖广(dotnet test 当前 492/492 通过),但仍有较多编译警告 |
已实现能力
- 无需 Office Interop,直接解析 OLE Compound File 与 PPT 记录流
- 支持文件与流输入输出(同步/异步)
- 支持
ConversionOptions:超时、大小限制、页数限制、图片数限制、编码覆盖、进度回调 - 支持
ConversionResult:耗时、页数、资源计数、告警、异常信息 - 支持批量转换(顺序与并行)
- 支持 CLI 子命令:
convert:单文件转换batch:目录/批量转换validate:输入文件检测preset:预设查看info:能力说明
已知限制
以下限制在运行结果中通常会以 warning 形式体现:
- 动画:复杂时序、路径和高级触发不保证可逆
- 评论:回复线程不会完整导出
- OLE/媒体:部分仅保留 payload,缺少可播放/可编辑关系绑定
- SmartArt:复杂布局仍可能走 fallback,编辑保真受限
- 字体:嵌入字体与主题字体方案的映射仍有边界
- 空安全:当前代码存在较多 nullable 警告,需要逐步清理
快速开始
环境要求
- .NET SDK 8.0+
构建与测试
dotnet build PowGrade.FileConverters.PptToPptx.sln
dotnet test PowGrade.FileConverters.PptToPptx.sln
库用法
using PowGrade.FileConverters.PptToPptx;
var options = new ConversionOptions
{
KeepTempFiles = false,
MaxSlideCount = 1000,
Timeout = TimeSpan.FromMinutes(10)
};
PptToPptxConverter.Convert(
@"C:\input\legacy.ppt",
@"C:\output\converted.pptx",
options);
如输入包含 VBA,建议输出为 .pptm:
PptToPptxConverter.Convert(
@"C:\input\legacy.ppt",
@"C:\output\converted.pptm");
CLI 用法
在项目目录执行:
dotnet run --project src/PowGrade.FileConverters.PptToPptx.Cli -- convert --input in.ppt --output out.pptx
批量转换:
dotnet run --project src/PowGrade.FileConverters.PptToPptx.Cli -- batch --input-dir ./in --output-dir ./out --pattern *.ppt
生成转换报告:
dotnet run --project src/PowGrade.FileConverters.PptToPptx.Cli -- convert --input in.ppt --output out.pptx --report report.txt
查看命令帮助:
dotnet run --project src/PowGrade.FileConverters.PptToPptx.Cli -- --help
dotnet run --project src/PowGrade.FileConverters.PptToPptx.Cli -- convert --help
架构概览
PptReader:解析 OLE 与 PPT 二进制记录,构建中间模型PresentationPptxWriter:将中间模型写入 OpenXML 包结构([Content_Types].xml、ppt/slides/*.xml、rels 等)Features/*:动画、注释、超链接、媒体、OLE、主题、SmartArt 等增强模块Pipeline/*:提供可组合中间件管道能力(日志、校验、重试、缓存等)TemplateEngine:文本报告渲染(单文件/批量)
依赖与集成
- 依赖
PowGrade.FileConverters.Core(注册适配器PptToPptxFileConverter) - 可通过
ServiceCollectionExtensions注入IPptToPptxConverter与IBatchConverter
改进路线(建议优先级)
- 清理 nullable 警告并补齐关键空值防护
- 提升表格保真(合并单元格、边框、填充)
- 扩展动画映射(触发/时序/路径)
- 完善媒体与 OLE 的 shape 绑定和播放行为映射
- 强化字体与主题联动,减少 fallback
- 继续扩大真实样本回归集并收敛告警噪音
许可证
MIT License,详见 LICENSE。
| 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)
- System.Text.Encoding.CodePages (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 155 | 4/30/2026 |