DevExpress Office 文件 API v24.1
辅助功能增强
在将 Word 文档导出为可访问的 PDF 文件时,我们扩展了对以下元素的可访问性相关支持:
目录标记
元数据字段
替代文本处理
表格
漂浮物体
使用 Adobe Acrobat Pro 和 PDF Accessibility Checker 2024 进行质量控制。我们的测试文档成功通过了 PDF/UA 兼容性和 WCAG 2.1 合规性验证。
当您指定以下选项时,可立即使用与可访问性相关的导出增强功能PdfUACompatibility:
C#
using System.IO;
using DevExpress.XtraRichEdit;
// ...
RichEditDocumentServer wordProcessor = new RichEditDocumentServer();
//...
using(FileStream stream =
new FileStream(resultFilePath, FileMode.Create, FileAccess.Write, FileShare.Read)) {
PdfExportOptions exportOptions = new PdfExportOptions();
exportOptions.PdfUACompatibility = PdfUACompatibility.PdfUA1;
wordProcessor.ExportToPdf(stream, exportOptions);
}此外,我们为文字处理形状和电子表格Decorative形状类添加了一个属性,用于将文档图形(图片、形状和图表)标记为装饰性图形。装饰性形状增加了视觉趣味,但它们并不提供信息。因此,在生成可访问文档时,您无需为装饰性对象指定 Alt Text(有意义的描述)。
在基于 Unix 的系统上打印
在此版本 (v24.1) 中,我们添加了对在基于 Unix 的系统上运行的基于 .NET 的 Office File API 的应用程序的打印支持。您现在可以在非 Windows 环境中打印条形码以及 Word、Excel 和 PDF 文档。
我们创建了一组新的 API,可与DevExpress.Drawing库中提供的DXPrinterSettings选项配合使用。
使用以下新方法在基于 Unix 的系统上打印文档和条形码:
C# // DevExpress.XtraRichEdit.RichEditDocumentServer: public void Print(DXPrinterSettings printerSettings, string printDocumentName); public void Print(DXPrinterSettings printerSettings); //DevExpress.Spreadsheet.Workbook: public void Print(DXPrinterSettings printerSettings); public void Print(DXPrinterSettings printerSettings, params string[] sheetNames); public void Print(DXPrinterSettings printerSettings, IEnumerable<string> sheetNames); //DevExpress.BarCodes.BarCode: public void Print(DXPrinterSettings printerSettings);
对于该类,您仍然需要调用当前方法。要修改打印设置,请使用新选项,如下所示: DevExpress.Pdf.PdfDocumentProcessorPrint(PdfPrinterSettings printerSettings)PdfPrinterSettings.DXPrinterSettings
C# using DevExpress.Drawing.Printing; using DevExpress.Pdf; // Load a PDF file PdfDocumentProcessor documentProcessor = new PdfDocumentProcessor(); documentProcessor.LoadDocument(@"..\..\Demo.pdf"); // Declare printer settings PdfPrinterSettings pdfPrinterSettings = new PdfPrinterSettings(); // Specify CUPS printer settings DXPrinterSettings dxPrinterSettings = pdfPrinterSettings.DXSettings; dxPrinterSettings.Duplex = DXDuplexMode.DuplexLongEdge; dxPrinterSettings.Copies = 3; // Print the document documentProcessor.Print(pdfPrinterSettings);
注意:对于基于 Unix 的系统,您需要libcups2单独安装该包。
将文档导出为 SVG
我们扩展了图像导出引擎,现在支持条形码生成 API、文字处理文档 API 和电子表格文档 API 库中的 SVG 图像。使用 v24.1,您可以在 Windows 和非 Windows 环境中从条形码、Word 文档页面和 Excel 工作表/单元格范围生成 SVG 图像。
要从条形码生成 SVG 图像,请创建一个 BarCode 类实例,根据需要修改设置,然后以参数形式 调用BarCode.Save方法。DXImageFormat.Svg
C#
using (BarCode barCode = new BarCode()) {
barCode.Symbology = Symbology.QRCode;
barCode.BackColor = Color.White;
barCode.ForeColor = Color.Black;
barCode.RotationAngle = 0;
barCode.CodeBinaryData = Encoding.Default.GetBytes("https://www.devexpress.com/");
barCode.Options.QRCode.CompactionMode = QRCodeCompactionMode.Byte;
barCode.Options.QRCode.ErrorLevel = QRCodeErrorLevel.Q;
barCode.Options.QRCode.ShowCodeText = false;
barCode.DpiX = 72;
barCode.DpiY = 72;
barCode.Module = 2f;
barCode.Save("barcode.svg", DXImageFormat.Svg);
}对于 Word 文档,使用我们的新图像导出 API - 创建一个RichEditImageExportOptions实例,使用属性指定目标 DXImageFormat.Svg 格式,并使用RichEditImageExportOptions 对象作为参数 调用RichEditDocumentServerExtensions.ExportToImage扩展方法。RichEditImageExportOptions.Format
C#
using (var wordProcessor = new RichEditDocumentServer()) {
wordProcessor.LoadDocument(@"C:\Documents\Alice.docx");
RichEditImageExportOptions options = new RichEditImageExportOptions();
options.Format = DXImageFormat.Svg;
options.PageRange = "1";
wordProcessor.Document.ExportToImage("first_page_image.svg", options);
}要将 Excel 工作表中的单元格范围导出为 SVG 图像,请调用带有参数的 CellRangeExtensions.ExportToImage方法。ImageFileFormat.Svg
C#
using (Workbook workbook = new Workbook()) {
workbook.LoadDocument("InvestmentPortfolio.xlsx", DevExpress.Spreadsheet.DocumentFormat.Xlsx);
Worksheet worksheet = workbook.Worksheets.ActiveWorksheet;
worksheet.Range["B18:I30"].ExportToImage("cell_range_image.svg", ImageFileFormat.Svg);
}
电子表格文档 API
#对齐和分布式文本对齐
v24.1 增加了对电子表格单元格内对齐和分布式水平对齐类型的支持。使用这些对齐选项的 Excel 文件可以打印并导出为 PDF。

您可以使用Cell.Alignment.Horizontal属性在代码中指定水平对齐。
以下代码片段在代码中指定对齐:
C#
var workbook = new Workbook();
var worksheet = workbook.Worksheets[0];
Cell cellA1 = worksheet.Cells["A1"];
cellA1.Value = "Justified and top";
cellA1.Alignment.Horizontal = SpreadsheetHorizontalAlignment.Justify;
cellA1.Alignment.Vertical = SpreadsheetVerticalAlignment.Top;
workbook.ExportToPdf("Result.pdf");
#按颜色排序和过滤
DevExpress 电子表格文档 API 附带增强的过滤和排序相关功能。我们添加了新的 API,可以按背景和字体颜色对工作簿数据进行排序和过滤。按单元格颜色过滤/排序的单元格范围也可以打印并导出为 PDF。
我们的排序 API 包括新的Worksheet.Sort方法重载,旨在按字体颜色或填充设置(背景颜色和图案)对指定范围进行排序。
以下代码片段对两个单元格范围内的单元格值进行排序 - 第一个单元格按红色字体颜色排序,第二个单元格按范围内第一个单元格指定的填充设置排序:
C#
workbook.LoadDocument("sort-filter.xlsx");
Worksheet worksheet = workbook.Worksheets.ActiveWorksheet;
// Sort cell range by font color
worksheet.Sort(worksheet["B2:B10"], Color.Red);
// Sort cell range by fill color
worksheet.Sort(worksheet["D2:D10"], worksheet["D2"].Fill);要按字体或背景颜色过滤单元格,您需要将自动过滤器应用于所需的单元格范围或表格。完成后,您需要从集合中获取所需的列并调用以下方法之一: AutoFilter.Columns
AutoFilterColumn.ApplyFillColorFilter(颜色)
AutoFilterColumn.ApplyFillFilter(填充)
AutoFilterColumn.ApplyFontColorFilter(颜色)
以下代码片段对单元格范围和表格都使用了这些方法:
C#
workbook.LoadDocument("sort-filter.xlsx");
Worksheet worksheet = workbook.Worksheets.ActiveWorksheet;
// Apply an auto-filter to a cell range and filter the first column by font color
worksheet.AutoFilter.Apply(worksheet["B1:B10"]);
worksheet.AutoFilter.Columns[0].ApplyFontColorFilter(Color.Red);
// Create a table, apply an auto-filter and filter the first column by fill color
Table table = worksheet.Tables.Add(worksheet["B12:B21"], true);
table.AutoFilter.Apply();
table.AutoFilter.Columns[0].ApplyFillColorFilter(Color.Red);此外,我们的新 API 允许您在过滤范围内对数据进行排序(启用自动过滤时)并同时按单元格的值/颜色对其进行排序(使用排序条件)。
PDF文档API
#图层 API
v24.1 包括增强的 PDF Facade API 和旨在管理代码中可选内容(图层)可见性的新 API。
注意:PDF 文档仅存储默认的可选内容配置。这意味着保存文档时不会保留图层可见性。可见性设置仅在您在 PDF 查看器组件中预览文档或打印文档/将其导出为图像时适用。
新的 API 可通过PdfDocumentFacade.OptionalContentVisibility属性获得。使用集合访问可选内容组。要更改组的可见性,请修改PdfOptionalContentGroupVisibility.Visible属性值。 PdfOptionalContentVisibility.Groups
以下代码片段更改存储在文档中的可选内容组的可见性并生成打印/图像输出(预览结果):
C#
PdfDocumentProcessor processor = new PdfDocumentProcessor();
processor.LoadDocument("layers.pdf");
// Set visibility for each Layer
processor.DocumentFacade.OptionalContentVisibility.Groups[0].Visible = false;
processor.DocumentFacade.OptionalContentVisibility.Groups[1].Visible = false;
processor.DocumentFacade.OptionalContentVisibility.Groups[2].Visible = true;
// Print document or export its page to an image to check the result
DXBitmap bitmap = processor.CreateDXBitmap(1, 1000);
processor.Print();#PDF-A 转换器增强功能
在此版本 (v24.1) 中,我们的PdfDocumentConverter可以将您的文档转换为 PDF/A-1b。要创建 PDF/A-1b 文档,请将值作为参数 传递给Convert方法。PdfCompatibility.PdfA1b
C#
using DevExpress.Pdf;
// ...
var filePath = "PdfAConversionDemo.pdf";
var converter = new PdfDocumentConverter(filePath);
// Convert the file to the Pdf/A1-b format.
converter.Convert(PdfCompatibility.PdfA1b);
converter.SaveDocument("Result.pdf");我们还添加了PdfDocumentConverter.PdfACompatibility和PdfDocumentConverter.PdfUACompatibility属性来帮助获取加载到转换器的文档的当前 PDF/A 和 PDF/UA 版本。
文字处理文档 API
#数学方程式
我们的文字处理工具现在可在保存文档时保留数学方程式。您可以在我们的文字处理文档 API 库中导入包含数学方程式的 Word 文档,并将其保存为 RTF 和 OpenXml (.docx/.docm) 格式,而不会丢失内容。注意:仅当源文档包含数学方程式的后备图像时,才会打印数学方程式或将其导出为 PDF。要禁止导入数学方程式,请将 DocumentCapabilities.MathEquations属性设置为。 DocumentCapability.Disabled
#跨平台图像导出 API
v24.1 包含新的跨平台 API,用于将 Word 文档页面导出为图像。此新功能允许您在 Windows 和非 Windows 环境中生成文档预览。使用我们的新 API,您可以将文档页面转换为光栅和矢量图像(PNG、JPEG、BMP、多页 Tiff、emf),将它们保存为磁盘上的物理文件或获取图像流列表以便在代码中进一步处理。您还可以设置图像背景颜色、修改输出图像分辨率或生成具有指定大小的缩略图。
新的 API 可通过对象的RichEditDocumentServerExtensions.ExportToImageDocument扩展方法获得。
请注意,该类RichEditDocumentServerExtensions是在 DevExpress.Docs.v24.1.dll 程序集中定义的。将此程序集添加到您的项目或安装“DevExpress.Document.Processor”NuGet 包以使用成员。您需要DevExpress Office File API 订阅或DevExpress Universal 订阅RichEditDocumentServerExtensions的许可证才能在生产代码中使用此类。
以下代码片段将文档的第一页导出为具有指定大小和 JPEG 格式的图像:
C#
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.Export.Image;
using DevExpress.Drawing;
using (var wordProcessor = new RichEditDocumentServer()) {
wordProcessor.LoadDocument(@"C:\Documents\Alice.docx");
RichEditImageExportOptions options = new RichEditImageExportOptions();
options.Format = DXImageFormat.Jpeg;
options.PageRange = "1";
options.LargestEdgeLength = 1080;
wordProcessor.Document.ExportToImage(@"C:\Documents\Image.jpeg", options);
}
#装订线和镜像边距
DevExpress Word Processing Document API v24.1 允许您指定装订线边距 - 额外的空间,可确保装订不会遮挡打印页面上的文本。您可以指定装订线位置(顶部、左侧和右侧)和边距大小。使用 Document.GutterAtTop 、 SectionMargins.GutterPosition和SectionMargins.Gutter属性来满足特定的使用要求。

以下代码片段向文档的第一部分添加了左侧边距:
C#
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;
using DevExpress.Office.Utils;
using (var wordProcessor = new RichEditDocumentServer()) {
wordProcessor.LoadDocument(@"Documents//Alice.docx");
Document document = wordProcessor.Document;
Section firstSection = wordProcessor.Document.Sections[0];
var pageMargins = firstSection.Margins;
pageMargins.GutterPosition = GutterPosition.Left;
pageMargins.Gutter = Units.InchesToDocumentsF(1);
wordProcessor.SaveDocument("Alice_formatted.docx", DocumentFormat.OpenXml);
}我们新的Document.MarginType属性允许您定义常规或镜像边距类型。如果您在纸张的两面打印并希望装订打印件,请启用镜像边距。
以下代码片段启用了镜像边距并指定了额外的空间值:
C#
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;
using DevExpress.Office.Utils;
using (var wordProcessor = new RichEditDocumentServer()) {
wordProcessor.LoadDocument(@"Documents//Alice.docx");
Document document = wordProcessor.Document;
// Enable mirrored margins
document.MarginsType = MarginsType.Mirrored;
foreach (Section section in wordProcessor.Document.Sections) {
var pageMargins = section.Margins;
// Set the value for mirrored margins
pageMargins.Gutter = Units.InchesToDocumentsF(0.5f);
}
wordProcessor.SaveDocument("Alice_formatted.docx", DocumentFormat.OpenXml);
}
渝公网安备50010702505508