DevExpress Office File API是一个专为C#, VB.NET 和 ASP.NET等开发人员提供的非可视化.NET库。有了这个库,不用安装Microsoft Office,就可以完全自动处理Excel、Word等文档。开发人员使用一个非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CSV 和 Snap Report等企业级文件。
DevExpress Office File API控件日前正式发布了v25.1,新版本拥有全新的Presentation API库、升级PDF Document API等,欢迎下载最新版体验!
全新的Presentation API库(CTP)
DevExpress v25.1版本中新的PowerPoint Presentation API库现在可用(v25.1.4+),Presentation API库允许您在任何基于.NET的应用程序中创建、读取、编辑、转换、合并、拆分和打印Microsoft PowerPoint文件。
注意:DevExpress Presentation API库目前作为社区技术预览版(CTP)提供。
DevExpress Presentation API 库支持以下平台和操作系统:
- .NET 8/9, .NET Framework 4.6.2+
- Windows, Linux, macOS
- Azure, AWS, Docker
PowerPoint Presentation API库包含在DevExpress Office File API和DevExpress Universal授权订阅中,在工作代码中使用此库需要有效的许可证。
PowerPoint Presentation API库允许您使用PPTX文件格式导入和保存演示文件(当然您也可以将文件打印/导出为PDF),它附带了以下内置功能:
- 添加、复制、重新排列、调整大小、隐藏或删除演示文稿幻灯片。
- 创建、自定义和应用不同的幻灯片布局。
- 访问和更新幻灯片母版内容。
- 合并多个演示文稿或将幻灯片从一个演示文稿复制到另一个演示文稿。
- 将一个演示文稿拆分为多个演示文稿(逐张幻灯片)。
- 提取或分配文本到特定的段落、形状、幻灯片、演讲者的笔记,或整个演示文稿。
- 格式化文本、段落、形状和幻灯片背景。
- 管理表示元数据。
要开始使用DevExpress Presentation API,请从Nuget.org或local\personal DevExpress NuGet feed安装DevExpress.Docs.Presentation NuGet package (v25.1.4+),添加 `DevExpress.Docs. Presentation` 命名空间到项目文件中,并创建一个"Presentation"实例。
下面的代码片段加载演示文稿并将其导出为PDF文件:
C#
cs
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));
PDF Document API
PDF文件压缩
保存时保留压缩对象流
在以前的版本中,PDF处理引擎仅在读取文档时支持压缩对象流,保存时DevExpress PDF Document API库以未压缩的形式编写PDF对象流。
为了使用DevExpress PDF Document API库保存PDF文档时减小文件大小,v25.1附带了一个新的压缩引擎,旨在保留PDF对象流的原始/压缩状态。DevExpress的压缩机制自动适用于各种文档结构(文本、PDF表单、字体等),并允许您更有效地修改/保存PDF文件。
压缩对象流只保留使用LoadDocument方法导入的文档,如果您将页面从一个文档复制到另一个文档或将多个文档合并为一个文档,则附加页面/文档的对象流将被解压缩。
图像压缩API
DevExpress v25.1包含用于压缩文档图像大小的API,这包括新的PdfDocumentProcessor.OptimizeDocument方法和PdfImageCompressionOptions类(指定所需的压缩设置)。使用PdfImageCompressionOptions,您可以设置目标JPEG质量(以百分比为单位),指定downsampling DPI (DownsamplingResolution属性),并为文档图像选择插值模式。
在保存文档之前调用PdfDocumentProcessor.OptimizeDocument方法来优化/减小输出PDF文件的大小,这个新选项还可以帮助提高包含图像的PDF文档的打印性能。
C#
cs
using (PdfDocumentProcessor pdfProcessor = new PdfDocumentProcessor()) {
pdfProcessor.LoadDocument("Example.pdf");
var options = new PdfImageCompressionOptions() {
JpegQuality = 40,
DownsamplingResolution = 100,
InterpolationMode = DevExpress.Drawing.DXInterpolationMode.HighQualityBicubic,
};
pdfProcessor.OptimizeDocument(options);
pdfProcessor.SaveDocument("Example_Compressed.pdf");
}
注意:图像压缩效率取决于源文档中的图像数量、原始大小和PDF页面上的物理大小。
PDF Redaction API
DevExpress v25.1包括用于创建和管理编校注释的新API,使用此功能您可以隐藏/删除文档中的敏感或私有内容,并在编辑区域中添加彩色文本覆盖。
编校过程包括两个步骤:
- 在PDF页面区域中创建一个具有所需外观的编校注释(如果希望隐藏内容但为其他用户保留内容,则创建一个值)。
- 使用注释清除内容,并使用指定的外观设置应用覆盖。在这种情况下,隐藏的内容将被删除。
创建编校注释
使用PDF Facade API可以进行编校。要创建编校注释,您必须:
- 获取DevExpress.Pdf.PdfDocumentFacade实例。
- 从PdfDocumentFacade.Pages集合中检索所需的PDF页面。
- 调用PdfPageFacade.AddRedactAnnotation方法,这个方法返回一个DevExpress.Pdf.PdfRedactAnnotationFacade对象,您可以用它来修改编校注释的外观:背景颜色、覆盖文本、文本字体设置(字体名称、颜色、大小和样式)、文本重复和对齐:
C#
cs
PdfDocumentProcessor pdfProcessor = new PdfDocumentProcessor();
pdfProcessor.LoadDocument("Demo.pdf");
PdfDocumentFacade documentFacade = pdfProcessor.DocumentFacade;
PdfRectangle pageCropBox = pdfProcessor.Document.Pages[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 the appearance of the redaction annotation
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;
// Save the document with the redaction annotation and send it for review
pdfProcessor.SaveDocument("output_to_review.pdf");
应用编校注解
新的API允许您应用以下注解:
- 单一编校注释:PdfRedactAnnotationFacade.Apply
- 特定页面的所有编校注释:PdfPageFacade.ApplyRedactAnnotations
- 整个文档中的所有编校注释:PdfDocumentFacade.ApplyRedactAnnotations
您还可以使用DevExpress.Pdf.PdfClearContentOptions来指定要删除的内容类型(文本、图形、图像或注释)。
C#
cs
PdfDocumentProcessor pdfProcessor = new PdfDocumentProcessor();
pdfProcessor.LoadDocument("Demo.pdf");
PdfDocumentFacade documentFacade = pdfProcessor.DocumentFacade;
// Review redaction annotations and apply
foreach (var page in documentFacade.Pages)
{
var redactionAnnotations =
page.Annotations.Where(annotation => annotation is PdfRedactAnnotationFacade).ToList();
foreach(PdfRedactAnnotationFacade annotation in redactionAnnotations)
{
if (annotation.Author == "Jane Doe")
annotation.Apply();
}
}
// Apply redaction annotations for a page
documentFacade.Pages[0].ApplyRedactAnnotations();
// Apply redaction annotations for the entire document
documentFacade.ApplyRedactAnnotations();
// Specify clear content settings and apply redaction annotations
documentFacade.ApplyRedactAnnotations(new PdfClearContentOptions()
{
ClearAnnotations = true,
ClearImages = true,
ClearText = true,
ClearGraphics = false
});
