DevExpress发布PowerPoint Presentation API库,支持跨平台与 PDF 导出

DevExpress专注于为 .NET、JavaScript、VCL 等多种平台提供高性能 UI 控件、报表工具、数据可视化组件及开发框架,产品覆盖桌面、Web、移动及跨平台应用开发领域。凭借稳定的性能、丰富的功能与优质的技术支持,DevExpress 的解决方案已广泛应用于金融、制造、医疗、能源、政府及教育等行业,帮助开发者更高效地构建现代化应用程序。

DevExpress官方宣布全新 .NET PowerPoint Presentation API 库的 Community Tech Preview(CTP)版现已发布(需使用 v25.1.4 及以上版本),该库旨在帮助您在 .NET 应用中创建、读取、编辑、转换、合并、拆分以及打印 Microsoft PowerPoint 文件。

在本文中,我将介绍该 CTP 版的关键功能,分享产品架构的见解,并演示如何通过代码构建一个演示文稿管理应用程序。

注意:DevExpress Presentation API 库目前为 Community Technology Preview(CTP)版本。

DevExpress 发布新一代PowerPoint Presentation API库,支持跨平台与 PDF 导出

获取DevExpress v25.1正式版下载

Presentation API概览
跨平台PowerPoint文件处理

DevExpress Presentation API 构建于 .NET 之上,开箱即用地支持广泛的平台与操作系统。无论您在开发传统桌面应用、Web 后端,还是跨平台解决方案,都可以无缝集成 PowerPoint 文件处理能力,无需依赖 Microsoft Office 或 PowerPoint 的安装环境。

支持的框架、操作系统和环境包括:

  • NET 8/9, .NET Framework 4.6.2+
  • Windows, Linux, macOS
  • Azure, AWS, Docker

DevExpress 发布新一代PowerPoint Presentation API库,支持跨平台与 PDF 导出

支持的文件格式与文档元素

当前版本(v25.1.x)的 PowerPoint Presentation API 库支持导入与保存 PPTX 格式演示文稿文件,同时支持将文件打印或导出为 PDF。

该库提供了一整套 API 和设置,帮助您以编程方式创建/管理演示文稿元素——包括:

  • 幻灯片、幻灯片布局、母版
  • 幻灯片备注、备注母版
  • 形状、连接器、文本框、图片
  • 形状文本、段落、占位符
  • 项目符号和编号列表
  • 演示文稿页眉与页脚
  • 内置与自定义文档属性
  • 演示文稿视图属性

代码示例 — 将演示文稿转换为 PDF

using DevExpress.Docs.Presentation;
//...
// Load a presentation
Presentation presentation = new Presentation(File.ReadAllBytes("mypresentation.pptx"));
// Export to PDF
presentation.ExportToPdf(new FileStream(@"D:\exported-document.pdf", FileMode.Create));
核心功能 — 程序化管理演示文稿

DevExpress Presentation API 让您能够以编程方式生成及组织演示内容,支持以下使用场景:

  • 添加、复制、重新排序、调整大小、隐藏或删除幻灯片
  • 创建、自定义及应用不同的幻灯片布局
  • 访问并更新幻灯片母版内容
  • 合并多个演示文稿,或将幻灯片从一个文档复制到另一个文档
  • 将一个演示文稿按幻灯片拆分成多个演示文稿
  • 提取或指定特定段落、形状、幻灯片、演讲者备注或整个演示文稿的文本
  • 格式化文本、段落、形状及幻灯片背景
  • 管理演示文稿元数据

代码示例 — 合并两个演示文稿

using DevExpress.Docs.Presentation;
//...
// Load presentations
Presentation presentation1 = new Presentation(File.ReadAllBytes("presentation1.pptx"));
Presentation presentation2 = new Presentation(File.ReadAllBytes("presentation2.pptx"));
// Merge presentation slides
foreach (Slide slide in presentation2.Slides) {
presentation1.Slides.Add(slide);
}
// Save the merged document to the PPTX file
FileStream outputStream = new FileStream(@"D:\merged_presentation.pptx", FileMode.Create);
presentation.SaveDocument(outputStream);

DevExpress 发布新一代PowerPoint Presentation API库,支持跨平台与 PDF 导出

面向对象的文档模型

与依赖接口型文档模型的其他 PowerPoint 处理库不同,DevExpress Presentation API 库采用了具体的面向对象模型设计。这种架构选择旨在提供更清晰、更灵活且更便于开发者使用的体验。

使用DevExpress Presentation API库,您可以直接使用直观的类——Slide、Shape、TextParagraph等。在向表示中添加新元素之前,可以初始化文档对象并配置所有必要的设置,这为基于流的文档生成提供了一种自然和结构化的方法。

此外,您可以跨多个幻灯片和演示文稿重用文档元素和配置设置。例如,您可以将相同的幻灯片添加到多个演示文稿中,或者对多个幻灯片或形状应用相同的格式(如下面的示例所示)。

// Create and apply the custom background to multiple slides in two different presentations
SolidFill fill = new SolidFill(Color.LightCyan);
CustomSlideBackground background = new CustomSlideBackground(fill);
presentation1.Slides[0].Background = background;
presentation1.Slides[1].Background = background;
presentation2.Slides[0].Background = background;

该方法允许您用更少的代码对表示文档进行更改,同时如果需要唯一的实例来防止意外更改,可以创建文档元素和设置单独的复制。

开始使用 PowerPoint Presentation API

若要在项目中使用 DevExpress Presentation API,请按以下步骤操作:

1. 从 Nuget.org 安装 DevExpress.Docs.Presentation NuGet 包(版本 v25.1.4 及以上):

dotnet add package DevExpress.Docs.Presentation --version 25.1.4

(也可通过 DevExpress 本地或个人 NuGet 源安装 Office File API 组件)

2. 在项目文件中添加 DevExpress.Docs.Presentation 命名空间。

3. 创建 Presentation 实例:

  • 使用无参数构造函数来新建一个带有一个空白幻灯片的演示文稿;
  • 使用字节数组或流参数的构造函数来加载已有的 PPTX 文件。

4. 使用 API 构建或修改演示文稿(生成内容、设置格式、更新元数据、重新组织幻灯片等)。

5. 生成输出:

  • 使用 Presentation.SaveDocument 保存为 PPTX;
  • 使用 Presentation.ExportToPdf 生成 PDF;
  • 使用 Presentation.Print 打印文档。

代码示例 — 从零创建新演示文稿

using DevExpress.Docs.Presentation;
//...
// Create a presentation with a single empty slide
Presentation presentation = new Presentation();// Configure Slide Master
SlideMaster slideMaster = presentation.SlideMasters[0];
slideMaster.Background = new CustomSlideBackground(new SolidFill(Color.FromArgb(194, 228, 249)));// Add a new slide with content
presentation.Slides.Clear();
Slide slide1 = new Slide(slideMaster.Layouts.Get(SlideLayoutType.Title));
foreach (Shape shape in slide1.Shapes) {
if (shape.PlaceholderSettings.Type is PlaceholderType.CenteredTitle) {
shape.TextArea = new TextArea("Daily Testing Status Report");
}
if (shape.PlaceholderSettings.Type is PlaceholderType.Subtitle) {
shape.TextArea = new TextArea($"{DateTime.Now: dddd, MMMM d, yyyy}");
}
}
presentation.Slides.Add(slide1);// Save Presentation to PPTX
FileStream outputStream = new FileStream(@"D:\mypresentation.pptx", FileMode.Create);
presentation.SaveDocument(outputStream);

更多DevExpress线上公开课、中文教程资讯请上中文网获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96761.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3使用 DAG 图(AntV X6)

参考文档 AntV X6 文档 可自定义设置以下属性 容器宽度(width),类型:number | string,默认 ‘100%’容器高度(height),类型:number | string,默认 ‘100%’…

【数据结构】跳表的概率模型详解与其 C 代码实现

文章目录介绍关键组成部分读者可以比对这张图片去理解跳表 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c5704b6276a14c3f9facdc3e55015bcc.jpeg#pic_center) 核心操作原理算法的概率模型跳表的 C代码实现初始化跳跃表的节点、跳跃表本身跳表插入节点查找元素更新…

Verilog实现除法器

文章目录基本原理确定除数最高位移位相减基本原理 若想得到yx\frac{y}{x}xy​的商和余数&#xff0c;一种最直观的想法就是不断地用yyy减掉xxx&#xff0c;直到y<xy< xy<x为止&#xff0c;写成伪代码如下 z 0 while y<x:y - xz 1这种算实在是太低效了&#xff…

EasyLive的一些疑问

目录 一、pinia是什么 二、html的代码片段又失效&#xff1f; 三、Request.js 四 、状态管理库 五、main.js:19 Uncaught SyntaxError: The requested module /src/utils/Api.js?t1745328489985 does not provide an export named default (at main.js:19:8)​编辑 六、…

C++(String):

目录 string与C中字符串的区别&#xff1a; C字符串&#xff1a; string字符串&#xff1a; string的定义和初始化&#xff1a; 输入字符串&#xff1a; 方式1&#xff1a; 方式2&#xff1a; 字符串的拼接的操作&#xff1a; 方式1&#xff1a;使用“” 方式2&#…

【Linux】Java线上问题,一分钟日志定位

【Linux】Java线上问题&#xff0c;一分钟日志定位1. 查看异常堆栈2. 实时叮新日志3. 翻历史/压缩日志4. 统计异常数量5. 多种异常一起查6. 反向过滤7. 同时满足多个关键字查询8. 定位最近一次异常9. 异常排行榜1. 查看异常堆栈 # 在 a.log 文件中查找包含 NullPointerExcepti…

智慧农业温室大棚远程监控物联网系统解决方案

一、方案背景与目标随着现代农业向智能化、精准化转型&#xff0c;传统温室大棚管理面临效率低、响应慢、成本高等痛点。本方案通过部署御控农业物联网系统&#xff0c;实现温室环境参数实时监测、设备远程控制、数据智能分析及预警决策&#xff0c;助力农户降低人工成本&#…

【剖析高并发秒杀】从流量削峰到数据一致性的架构演进与实践

一、 挑战&#xff1a;三高背景下的数据库瓶颈秒杀场景的核心挑战可以归结为“三高”&#xff1a;高并发、高性能、高可用。而系统中最脆弱的一环&#xff0c;往往是我们的关系型数据库&#xff08;如MySQL&#xff09;。它承载着最终的数据落地&#xff0c;其连接数、IOPS和CP…

Redisson最新版本(3.50.0左右)启动时提示Netty的某些类找不到

文章目录一、写在前面二、解决方案1、解决方案2、一劳永逸3、确定redisson依赖netty的版本一、写在前面 Redisson最新版本&#xff0c;大概3.47.0&#xff0c;在JDK8环境下&#xff08;实测JDK17也一样&#xff09;会提示Netty的某些类找不到&#xff1a; Exception in threa…

MTK Linux DRM分析(八)- KMS drm_crtc.c

一、简介 Linux DRM(Direct Rendering Manager)子系统是内核中管理图形硬件的核心组件,而 CRTC(CRT Controller)又是其中的关键之一。它起源于过去控制阴极射线管(CRT)显示器的控制器概念,如今在现代图形显示中依旧扮演着至关重要的角色。 可以把 CRTC 想象成图形显示…

vue+openlayers示例:适配arcgis矢量瓦片服务以及样式(附源码下载)

由于单位这边有个项目是基于openlayers地图引擎框架实现webgis地图可视化功能&#xff0c;但是要调用第三方的arcgis矢量瓦片服务以及适配样式&#xff0c;在这个背景下&#xff0c;基于openlayersvue实现适配arcgis矢量瓦片服务以及样式效果&#xff0c;适合学习openlayers与前…

mybatis xml中表名 字段报红解决

mybatis xml中表名 字段报红解决

谷歌浏览器重定向url,谷歌浏览器浏览网页修改url到本地

谷歌应用商店搜索插件requestly&#xff08;有个相似名称的插件&#xff0c;选择这个Requestly: Supercharge your Development & QA&#xff09; 安装后打开插件网址https://app.requestly.io/rules/my-rules 新建规则rules->my rules-> new rule -> redirect …

教育场景下禁用html5播放器拖动进度条的例子

禁用视频课程进度条的拖动功能&#xff0c;主要是为了强制学员按照课程设计的顺序观看内容&#xff0c;防止跳过关键知识点&#xff0c;从而保证学习效果和课程的完整性。 1.防止应试作弊&#xff1a; 在一些需要观看视频才能解锁下一章节或完成测试的场景中&#xff0c;禁用…

async实战

一、协程 协程是程序员人为创造 协程是一种用户态内的上下文切换技术。通过一个线程实现代码块相互切换执行。yield返回生成器 yield from 代表&#xff0c;跳到 func2协程函数 通过函数名()&#xff0c;是执行不了的。需要把函数加入到loop里面来&#xff0c;才可以被执行。 把…

个人搭建小网站教程(云服务器Ubuntu版本)

目录 1.配置云服务器&#xff08;略讲&#xff09; 2.vscode连接&#xff08;ssh连接&#xff09; 3.本地压缩项目包 4.传输项目 5.配置项目依赖 6.运行项目 1.启动 FastAPI 后端&#xff08;Python 部分&#xff09; 2.启动 Next.js 前端&#xff08;Node.js 部分&…

pion/webrtc v4.1.4 版本发布:关键特性与性能优化全面解析

引言 实时通信技术在现代互联网应用中扮演着越来越重要的角色&#xff0c;从视频会议到在线教育&#xff0c;从远程医疗到物联网设备交互&#xff0c;WebRTC技术已经成为实时音视频通信的事实标准。作为Go语言中最成熟且广泛使用的WebRTC实现&#xff0c;pion/webrtc项目持续推…

集成算法(聚类)

下面简单集成算法代码from sklearn.datasets import make_blobs from sklearn.cluster import KMeans import matplotlib.pyplot as plt# 创建数据集&#xff0c;生成 3 个中心的聚类数据&#xff0c;共 300 个样本&#xff0c;每个样本 2 个特征 X, _ make_blobs(n_samples30…

01 网络信息内容安全--绪论

1 课程内容 网络信息内容获取技术网络信息内容预处理技术网络信息内容过滤技术社会网络分析技术入侵检测技术异常流量检测技术对抗攻击技术 2 理论研讨 分为16个组 2.1 网络信息内容获取技术&#xff1a;第1组 【用DeepSeek网站爬虫&#xff0c;数据获取零成本&#xff01…

GPT-5:天变了吗?还是风停了?

2025年8月8日&#xff0c;OpenAI 发布了 GPT-5。这次更新被许多人寄予厚望&#xff0c;也引发了不少争议。对普通用户来说&#xff0c;这是一场“又快又会做事”的智能盛宴&#xff1b;而对资深开发者和 AI 研究者而言&#xff0c;GPT-5 可能更像是一次不够激进、略显保守的版本…