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
英文地址,請注明出處:http://en.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 可能更像是一次不夠激進、略顯保守的版本…