界面控件DevExpress WPF v25.1新版亮点:PDF Viewer功能全新升级

DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。

DevExpress WPF控件近期全新发布v25.1,此版本增强PDF Viewer、电子表格等控件功能,欢迎下载最新版体验!

点击获取DevExpress v25.1正式版下载

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 APISubscription或DevExpress Universal Subscription的有效授权许可。

在代码中创建和应用编校注释

要创建编校注释,您必须:

新的API允许您应用以下注解:

您还可以使用DevExpress.Pdf.PdfClearContentOptions来指定要删除的内容类型(文本、图形、图像或注释)。

C#

cs 复制代码
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.AddLinkedOleObjectOleObjectCollection.AddEmbeddedOleObject方法允许您在工作表中创建新的链接或嵌入OLE对象。

C#

cs 复制代码
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.AsLinkedContentOleObject.AsEmbeddedContent 方法允许您根据OLE对象类型提取附加信息。对于链接的对象,您可以使用OleObjectLinkedContent.FileName属性获得链接的文件名。对于嵌入对象,您可以使用OleObjectEmbeddedContent.GetRawData 方法获得原始二进制内容,或者使用OleObjectEmbeddedContent.SaveAs方法将嵌入内容保存到文件中。

C#

cs 复制代码
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.DeleteOleObjectCollection.RemoveOleObjectCollection.RemoveAt方法删除单个OLE对象,或使用OleObjectCollection.Clear 方法从工作表中删除所有OLE对象。

C#

cs 复制代码
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)中可用。

相关推荐
He BianGu1 小时前
【笔记】在WPF中GiveFeedbackEventHandler的功能和应用场景详细介绍
笔记·wpf
就是有点傻1 小时前
WPF自定义控件-水晶球
wpf
鹏大师运维1 小时前
统信UOS上使用WPS PDF独立版
linux·运维·windows·pdf·wps·统信uos·wine
ttod_qzstudio1 小时前
PDF 生成与本地文件操作:浏览器原生文件系统 API 实战
pdf
He BianGu2 小时前
【笔记】在WPF中QueryContinueDragEvent的详细介绍
笔记·wpf
He BianGu2 小时前
【笔记】在WPF中QueryCursor事件的功能和应用场景详细介绍
笔记·wpf
He BianGu3 小时前
【笔记】在WPF中CommandManager的功能和应用场景详细介绍
笔记·wpf
asdzx673 小时前
使用 Python 比较 PDF 文件差异(简单方法)
python·pdf·文档比较
开开心心就好3 小时前
免费轻量级PDF阅读器,打开速度快
windows·计算机视觉·visualstudio·pdf·计算机外设·excel·myeclipse
关关长语3 小时前
HandyControl中Button图标展示多色路径
c#·.net·wpf·handycontrol