DevExpress WPF v24.1新版亮点:PDF查看器、富文本编辑器功能升级

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

DevExpress WPF控件日前正式发布了今年一个重大版本——v24.1,此版本全新升级了PDF查看器、富文本编辑器等功能,欢迎下载最新版体验!

DevExpress v24.1正式版下载(Q技术交流:532598169)

PDF Viewer(查看器)
签名信息面板

使用全新的Signature Info(签名信息)面板,您可以显示加载文档种每个签名的详细信息并验证签名的有效性。

当您打开文档时,DevExpress WPF PDF Viewer将验证签名并在Signature面板中显示相关状态(有效、无效或未知)。

DevExpress WPF v24.1产品图集

此外,新面板还显示了以下与签名相关的信息:

  • 文件中签名的位置
  • 签名者的信息
  • 创建签名的原因
  • 文件签署的日期和时间,并在签署后进行修改
  • 证书信息
图层

DevExpress WPF PDF文档图层允许您有选择地查看或隐藏特定内容部分,图层的主要目的是控制在不同状态下呈现在PDF文档中的图形对象的可见性(当您查看或打印PDF文档时)。

DevExpress WPF v24.1产品图集

这个新功能允许您通过UI更改图层可见性。在新建图层面板中,点击图层名称旁边的复选框,显示/隐藏给定的文档图层。使用“眼睛”图标突出显示可见层;由于文档配置而无法隐藏的层在其名称旁边没有复选框。

新版本添加了一个图层面板来显示文档中包含的所有图层,借助PDF Facade API的强大功能,您还可以在运行时预览或打印PDF文档时访问和管理图层可见性。调用PdfViewerExtensions.GetDocumentFacade扩展方法来获取PdfDocumentFacade类对象(它允许您在不访问其内部结构的情况下更改PDF文档),并使用PdfDocumentFacade.OptionalContentVisibility集合来更改代码中所需文档层的可见性状态。

注意:PdfDocumentFacade类在DevExpress.Docs.v24.1.dll程序集中定义,将这个程序集添加到您的项目中,或者安装DevExpress.Document.Processor NuGet包来使用PdfDocumentFacade成员。您需要获得DevExpress Office File API Subscription或DevExpress Universal Subscription的授权才能在生产代码中使用该类。

C#

pdfViewer.LoadDocument("layers.pdf");
PdfDocumentFacade documentFacade = pdfViewer.GetDocumentFacade();// Set visibility for each Layer
documentFacade.OptionalContentVisibility.Groups[0].Visible = false;
documentFacade.OptionalContentVisibility.Groups[1].Visible = false;
documentFacade.OptionalContentVisibility.Groups[2].Visible = true;
富文本编辑器
导出为可访问的PDF

在将Word文档导出为可访问的PDF文件时,我们扩展了对以下元素的可访问性相关支持:

  • 目录标签
  • 元数据字段
  • Alt文本处理
  • 表格
  • 浮动对象

使用Adobe Acrobat Pro 和 PDF Accessibility Checker 2024进行质量控制,DevExpress的测试文档成功地通过了PDF/UA兼容性和WCAG 2.1兼容性的验证。

当您指定PdfUACompatibility选项时,与可访问性相关的导出增强功能可以开箱即用:

C#

using System.IO;
using DevExpress.XtraRichEdit;//...
using(FileStream stream =
new FileStream(resultFilePath, FileMode.Create, FileAccess.Write, FileShare.Read)) {
PdfExportOptions exportOptions = new PdfExportOptions();
exportOptions.PdfUACompatibility = PdfUACompatibility.PdfUA1;richEditControl.ExportToPdf(stream, exportOptions);
}
装饰形状

新版本为Shape类添加了一个Decorative属性,将文档图形(图片、形状和图表)标记为装饰性的。装饰性的形状增加了视觉上的趣味,但它们不能提供信息。因此在生成可访问文档时,不需要为装饰性对象指定Alt Text(有意义的描述)。

数学方程

DevExpress WPF富文本编辑器现在保存文档时保留数学方程,您可以在我们的WinForms富文本编辑器中导入带有数学方程的Word文档,并将其保存为RTF和OpenXml (.docx/.docm)格式,而不会丢失内容。

注意:只有当源文档包含数学方程的备用图像时,数学方程才会被打印或导出为PDF。要抑制Math Equation导入,请将DocumentCapabilities.MathEquations 属性设置为DocumentCapability.Disabled。

边距和镜像边距

DevExpress WPF Rich Text Editor v24.1允许您指定gutter边距——额外的空间,以确保绑定不会掩盖打印页面上的文本。您可以指定gutter位置(上、左、右)和边距大小,使用Document.GutterAtTop, SectionMargins.GutterPosition 和 SectionMargins.Gutter属性来解决特定的使用需求。

DevExpress WPF v24.1产品图集

下面的代码片段在第一个文档节中添加了一个左gutter:

C#

using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;
using DevExpress.Office.Utils;
//...richEditControl.LoadDocument(@"Documents//Alice.docx");Document document = richEditControl.Document;
Section firstSection = wordProcessor.Document.Sections[0];var pageMargins = firstSection.Margins;
pageMargins.GutterPosition = GutterPosition.Left;
pageMargins.Gutter = Units.InchesToDocumentsF(1);richEditControl.SaveDocument("Alice_formatted.docx", DocumentFormat.OpenXml);

新的Document.MarginType属性允许您定义一个规则或镜像的边距类型,如果在纸张的两面打印并希望绑定打印输出,则启用镜像页边距。

下面的代码片段启用镜像边距并指定一个额外的空格值:

C#

using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;
using DevExpress.Office.Utils;
//...
richEditControl.LoadDocument(@"Documents//Alice.docx");
Document document = richEditControl.Document;// Enable mirrored margins
document.MarginsType = MarginsType.Mirrored;foreach (Section section in richEditControl.Document.Sections) {
var pageMargins = section.Margins;// Set the value for mirrored margins
pageMargins.Gutter = Units.InchesToDocumentsF(0.5f);
}richEditControl.SaveDocument("Alice_formatted.docx", DocumentFormat.OpenXml);

新的UI元素也可用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/56219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1971. 寻找图中是否存在路径

有一个具有 n 个顶点的 双向 图,其中每个顶点标记从 0 到 n - 1(包含 0 和 n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 每个顶点对由 最多一条 边连接&#x…

Vue3 学习笔记(一)Vue3 介绍及环境部署

一、Vue.js 简介 1、Vue.js 是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。Vue 只关注视图层, 采用自底向上增量开发的设计。Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件…

性能工具之JMeter 通过Java API生成 BeanShell PreProcessor 脚本

文章目录 一、前言二、实现代码三、代码示例四、最后 一、前言 对于上一篇文章(性能工具之 HAR 格式化转换JMeter JMX 脚本文件)还是有点问题。大家在使用的情况需要注意。 如果多个接口相同 path 路径且不同参数进行查询如: 上面接口如果…

【前端】如何制作一个自己的网页(15)

有关后代选择器的具体解释&#xff1a; 后代选择器 后代选择器使用时&#xff0c;需要以空格将多个选择器间隔开。 比如&#xff0c;这里p span&#xff0c;表示只设置p元素内&#xff0c;span元素的样式。 <style> /* 使用后代选择器设置样式 */ p span { …

java--多态(详解)

目录 一、概念二、多态实现的条件三、向上转型和向下转型3.1 向上转型3.2 向下转型 四、重写和重载五、理解多态5.1练习&#xff1a;5.2避免在构造方法中调用重写的方法&#xff1a; 欢迎来到权权的博客~欢迎大家对我的博客提出指导这是我的博客主页&#xff1a;点击 一、概念…

Java毕业设计 基于SpringBoot发卡平台

Java毕业设计 基于SpringBoot发卡平台 这篇博文将介绍一个基于SpringBoot发卡平台&#xff0c;适合用于Java毕业设计。 功能介绍 首页 图片轮播 商品介绍 商品详情 提交订单 文章教程 文章详情 查询订单  查看订单卡密 客服   后台管理 登录 个人信息 修改密码 管…

Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容

介绍 在当今数据驱动的世界中&#xff0c;抓取动态网页内容变得越来越重要&#xff0c;尤其是像抖音这样的社交平台&#xff0c;动态加载的评论等内容需要通过特定的方式来获取。传统的静态爬虫方法难以处理这些由JavaScript生成的动态内容&#xff0c;Selenium爬虫技术则是一…

字典如何与选择器一起使用

背景&#xff1a;开发过程中会遇到某些字段需要做成下拉框。如下图&#xff1a; 组件 | Element里有select选择器这个组件可以实现下拉框的效果 我们可能会想到创一个辅助表来存储这些下拉数据像这样 这样虽然能实现&#xff0c;但是在实际开发中是不合理的&#xff0c;如果有…

个税自然人扣缴客户端数据的备份与恢复(在那个文件夹)

一&#xff0c;软件能够正常打开&#xff0c;软件中的备份与恢复功能 1&#xff0c;备份 您按照下面的方法备份一下哦~ 进入要备份的自然人软件&#xff0c;点击左侧系统设置→→系统管理→→备份恢复&#xff1b; 在备份设置里&#xff0c;点击“备份到选择路径”&#xff0c;…

WebGL编程指南 - 颜色与纹理续

设置纹理坐标&#xff08;initVertexBuffers()&#xff09; 从缓冲区到 attribute 变量的流程&#xff1a; // 顶点坐标 function initVertexBuffers(gl) {// 数据准备let verticesTexCoords new Float32Array([// 顶点坐标&#xff0c;纹理坐标-0.5, 0.5, 0.0, 1.0, -0.5, …

图像异常检测评估指标-分类性能

图像异常检测评估指标-分类性能 1. 混淆矩阵 混淆矩阵包括4个用于衡量分类算法性能的基本数值 四个字母代表的含义是&#xff1a;P&#xff08;Positive&#xff09;代表算法将样本预测为正类&#xff0c;N&#xff08;Negative&#xff09;代表算法将样本预测为负类&#xf…

ST7789读取ID错误新思路(以STC32G为例)

1.前言 前两天刚把ST7789写入搞定&#xff0c;这两天想折腾一下读取。最开始是读ID&#xff0c;先是用厂家送的程序&#xff0c;程序里面用的是模拟I8080协议&#xff0c;一切正常。后来我用STC32G的内置LCM模块&#xff0c;发现读取不出来。更神奇的是ID读不出来&#xff0c;…

[项目详解][boost搜索引擎#2] 建立index | 安装分词工具cppjieba | 实现倒排索引

目录 编写建立索引的模块 Index 1. 设计节点 2.基本结构 3.(难点) 构建索引 1. 构建正排索引&#xff08;BuildForwardIndex&#xff09; 2.❗构建倒排索引 3.1 cppjieba分词工具的安装和使用 3.2 引入cppjieba到项目中 倒排索引代码 本篇文章&#xff0c;我们将继续项…

【C++指南】类和对象(四):类的默认成员函数——全面剖析 : 拷贝构造函数

引言 拷贝构造函数是C中一个重要的特性&#xff0c;它允许一个对象通过另一个已创建好的同类型对象来初始化。 了解拷贝构造函数的概念、作用、特点、规则、默认行为以及如何自定义实现&#xff0c;对于编写健壮和高效的C程序至关重要。 C类和对象系列文章&#xff0c;可点击下…

GitLab+Jenkins 实现 Webhook 自动化触发构建

在持续集成和持续部署&#xff08;CI/CD&#xff09;过程中&#xff0c;如何实现代码提交后自动触发构建&#xff1f;今天&#xff0c;我们将通过GitLab与Jenkins的集成&#xff0c;利用Webhook实现自动化触发构建&#xff0c;为你的开发流程注入高效能量&#xff01; 在每次代…

Java 多线程(六)—— 线程池 和 工厂模式

线程池 随着现代计算机的发展&#xff0c;任务越来越多&#xff0c;线程创建也逐渐增加&#xff0c;每次让操作系统创建线程这个开销就有点大&#xff0c;因此&#xff0c;我们诞生了线程池的概念&#xff0c;线程池里面有很多线程&#xff0c;这些线程可以被用户去调用执行任…

Java最全面试题->Java基础面试题->JavaSE面试题->异常面试题

文章目录 异常1.说一下Java中的异常体系&#xff1f;2.Error和Exception的区别3.写出你最常见的 5 个 RuntimeException&#xff1f;4.如何处理异常?5.try()里面有⼀个return语句&#xff0c; 那么后面的finally{}里面的代码会不会被执行&#xff1f;什么时候执行&#xff0c;…

C++ 进阶:类相关特性的深入探讨

⭐在对C 中类的6个默认成员函数有了初步了解之后&#xff0c;现在我们进行对类相关特性的深入探讨&#xff01; &#x1f525;&#x1f525;&#x1f525;【C】类的默认成员函数&#xff1a;深入剖析与应用&#xff08;上&#xff09; 【C】类的默认成员函数&#xff1a;深入剖…

初阶数据结构【3】--单链表(比顺序表还好的一种数据结构!!!)

本章概述 前情回顾单链表实现单链表彩蛋时刻&#xff01;&#xff01;&#xff01; 前情回顾 咱们在上一章博客点击&#xff1a;《顺序表》的末尾&#xff0c;提出了一个问题&#xff0c;讲出了顺序表的缺点——有点浪费空间。所以&#xff0c;为了解决这个问题&#xff0c;我…

TypeScript 出现过的问题

不能将类型“unknown”分配给类型“string”。 不能直接将类型“unknown”分配给类型“string” /**** 【1 - 问题】会画红波浪线 ****/ window.document.title to?.meta?.title || /**** 【2 - 解决】解决红波浪线 ****/ const title: unknown to?.meta?.title || if …