DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。
DevExpress WPF控件近期全新发布v25.1,此版本增强PDF Viewer、电子表格等控件功能,欢迎下载最新版体验!
DevExpress技术交流群12:1028386091 欢迎一起进群讨论
PDF Viewer
保存时保留压缩对象流
在以前的版本中,DevExpress PDF处理工具仅在读取文档时支持压缩对象流。
为了在保存PDF文档时减小文件大小,v25.1包含了一个新的压缩引擎,可以保留PDF对象流的原始/压缩状态。DevExpress压缩机制自动适用于多种文档结构(文本,PDF表单,字体等),并允许您更有效地修改和保存PDF文件。
PDF Redaction API
v25.1包括用于创建和管理PDF编校注释的新API,使用此功能,您可以隐藏/删除文档中的敏感或私有内容,并在编辑区域中添加彩色文本覆盖。
编校过程包括两个步骤:
- 在PDF页面区域中创建一个具有所需外观的编校注释(如果希望隐藏内容但为其他用户保留内容,则创建一个值)。
- 使用注释清除内容,并使用指定的外观设置应用覆盖。在这种情况下,所有隐藏的内容都将被删除。
注意:编校可以使用PDF Facade API (DevExpress.Pdf. PdfDocumentFacade类),该类在DevExpress.Docs.v25.1.dll程序集中定义,将这个程序集添加到您的项目中,或者从离线包源中安装DevExpress.Document.Processor Nuget包来使用PdfDocumentFacade成员。
要在生产代码中使用这个类,需要拥有DevExpress Office File API Subscription或DevExpress Universal Subscription的有效授权许可。
在代码中创建和应用编校注释
要创建编校注释,您必须:
- 使用PdfViewerControl.GetDocumentFacade扩展方法来获取DevExpress.Pdf.PdfDocumentFacade实例。
- 从 PdfDocumentFacade.Pages集合中检索所需的PDF页面。
- 调用PdfPageFacade.AddRedactAnnotation方法,该方法返回一个PdfRedactAnnotationFacade对象,您可以使用该对象修改编校注释的外观:背景颜色、覆盖文本、文本字体设置(字体名称、颜色、大小和样式)、文本重复和对齐。
新的API允许您应用以下注解:
- 单个编校注释:PdfRedactAnnotationFacade.Apply
- 特定页面的所有编校注释:PdfPageFacade.ApplyRedactAnnotations
- 整个文档中的所有编校注释:PdfDocumentFacade.ApplyRedactAnnotations

您还可以使用DevExpress.Pdf.PdfClearContentOptions来指定要删除的内容类型(文本、图形、图像或注释)。
C#
pdfViewer.LoadDocument("Demo.pdf");
//...
PdfDocumentFacade documentFacade = pdfViewer.GetDocumentFacade();
PdfRectangle pageCropBox = pdfViewer.GetPageInfo(0).CropBox;
PdfRectangle redactBounds =
new PdfRectangle(0, pageCropBox.Height-50, 200, pageCropBox.Height);
// Add a redaction annotation at the top left corner of the first document page.
PdfRedactAnnotationFacade redactAnnotation =
documentFacade.Pages[0].AddRedactAnnotation(redactBounds);
redactAnnotation.Author = "Jane Doe";
// Setup redaction annotation appearance
redactAnnotation.FillColor = new PdfRGBColor(0, 0, 0);
redactAnnotation.FontColor = new PdfRGBColor(1, 1, 1);
redactAnnotation.FontName = "Calibri";
redactAnnotation.FontSize = 0; // enables font auto-size
redactAnnotation.OverlayText = "Classified";
redactAnnotation.TextJustification = PdfTextJustification.Centered;
redactAnnotation.RepeatText = false;
// Apply the redaction annotation.
redactAnnotation.Apply();
Spreadsheet(电子表格)控件
OLE对象
DevExpress WPF Spreadsheet控件现在支持OLE对象,OLE(对象链接和嵌入)允许您链接外部文件并将数据(电子表格,PDF文件,邮件消息,演示文稿等)嵌入到Excel文档中。
有了OLE Object的支持,您可以执行以下操作:
- 创建带有外部文件链接的OLE对象,或将这些文件中的数据嵌入到文档中;
- 获取OLE对象属性;
- 从文档中提取OLE对象数据;
- 从文档中删除OLE对象;
- 打印和输出带有OLE对象图标的文件为PDF/图像格式;
- 加载和保存包含OLE对象的文档而不会丢失内容。
OLE对象由OleObject接口表示,作为唯一的文档形状,OLE对象从基本形状接口继承所有设置,形状设置定义OLE对象的图标外观、位置和内部对象属性(包括名称、图标大小、图标在工作表中的位置、所有文本等)。
要访问工作表中的OLE对象,请使用Worksheet.OleObjects 集合(也可通过Worksheet.Shapes集合获得),OleObjectCollection.AddLinkedOleObject和OleObjectCollection.AddEmbeddedOleObject方法允许您在工作表中创建新的链接或嵌入OLE对象。
C#
Worksheet worksheet = spreadsheetControl.ActiveWorksheet;
CellRange oleIconRange = worksheet.Range["B4:D6"];
SpreadsheetImageSource oleIcon = SpreadsheetImageSource.FromFile("oleIcon.png");
// Create linked OLE object.
OleObject oleObjectLinked = worksheet.OleObjects.AddLinkedOleObject(
oleIconRange, "package.pdf", OleObjectType.Package, oleIcon);
// Create embedded OLE object from a byte array.
byte[] sourceData = File.ReadAllBytes("package.pdf");
OleObject oleObjectEmbedded1 = worksheet.OleObjects.AddEmbeddedOleObject(
oleIconRange, sourceData, OleObjectType.Package, oleIcon);
// Create embedded OLE object from a file stream.
using (var stream = File.OpenRead("package.pdf")) {
OleObject oleObjectEmbedded2 = worksheet.OleObjects.AddEmbeddedOleObject(
oleIconRange, stream, OleObjectType.Package, oleIcon);
您还可以提取和分析链接和嵌入的数据,使用OleObject.InsertType属性来确定OLE对象类型(链接的或嵌入的),OleObject.AsLinkedContent 和OleObject.AsEmbeddedContent 方法允许您根据OLE对象类型提取附加信息。对于链接的对象,您可以使用OleObjectLinkedContent.FileName属性获得链接的文件名。对于嵌入对象,您可以使用OleObjectEmbeddedContent.GetRawData 方法获得原始二进制内容,或者使用OleObjectEmbeddedContent.SaveAs方法将嵌入内容保存到文件中。
C#
Worksheet worksheet = spreadsheetControl.ActiveWorksheet;
OleObject oleObject = worksheet.OleObjects[0];
if(oleObject.InsertType == OleObjectInsertType.Linked)
{
OleObjectLinkedContent linkedContent = oleObject.AsLinkedContent();
string linkedFileName = linkedContent.FileName;
}
if(oleObject.InsertType == OleObjectInsertType.Embedded)
{
OleObjectEmbeddedContent embeddedContent = oleObject.AsEmbeddedContent();
byte[] oleRawData = embeddedContent.GetRawData();
if (oleObject.Type == OleObjectType.AdobeAcrobatDocument)
using (FileStream stream = new FileStream("embedded_document.pdf", FileMode.Create, FileAccess.Write))
embeddedContent.SaveAs(stream);
}
您还可以从电子表格中删除OLE对象。使用OleObject.Delete、OleObjectCollection.Remove或OleObjectCollection.RemoveAt方法删除单个OLE对象,或使用OleObjectCollection.Clear 方法从工作表中删除所有OLE对象。
C#
OleObject oleObject = worksheet.OleObjects[0]; // Remove the current OLE object. oleObject.Delete(); // or worksheet.OleObjects.Remove(oleObject); // Remove all OLE objects in the collection. worksheet.OleObjects.Clear();
注意:OLE对象支持仅在基于OpenXML的文件格式(XLSX、XLSM、XLTX和XLTM)中可用。
更多DevExpress线上公开课、中文教程资讯请上中文网获取
关于慧都科技
慧都是⼀家⾏业数字化解决⽅案公司,专注于软件、⽯油与⼯业领域,以深⼊的业务理解和⾏业经验,帮助企业实现智能化转型与持续竞争优势。
慧都是DevExpress的中国区的合作伙伴,DevExpress作为用户界面领域的优秀产品,帮助企业高效构建权限管理、数据可视化(如网格/图表/仪表板)、跨平台系统(WinForms/ASP.NET/.NET MAUI)及行业定制解决方案,加速开发并强化交互体验。

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:DevExpress控件中文网 [https://www.devexpresscn.com/]
本文地址:https://www.devexpresscn.com/post/5561.html
相关产品: DevExpress WPF Subscription, DevExpress Universal Subscription,
联系电话:023-68661681



返回