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 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
支持的文件格式與文檔元素
當前版本(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);
面向對象的文檔模型
與依賴接口型文檔模型的其他 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線上公開課、中文教程資訊請上中文網獲取