GrapeCity Documents for PDF (GcPdf) 6.2 Crack

GrapeCity PDF 文档 (GcPdf)

改进了对由 GcPdf 以外的软件生成的现有 PDF 文档的处理

在新的 v6.2 版本中,GcPdf 增强了 PDF 文档的加载和保存,并提供以下优势:

  1. GcPdf 现在可以加载和保存可能不严格符合 PDF 规范的 PDF 文档。
  2. GcPdf 现在将保留 PDF 文档中嵌入的不属于 PDF 规范一部分的任何自定义数据。
  3. 加载 PDF 文档的平均速度已得到提高。

由于 GcPdf 处理加载 PDF 的方式发生了变化,一些较低级别的 GcPdf API 必须进行更改,如果使用这些 API,可能需要对代码进行少量更改;受影响的 API 的完整列表。

无需指定密码即可使用受密码保护的文件

GcPdf 现在允许使用受密码保护的文件而无需指定密码。加载受密码保护的文件后,您现在可以执行以下操作而无需指定密码:

  • 不基于 PDF 字符串对象的读/写属性,例如:
    • 您可以获取/设置 CheckBoxField 或 RadioButtonField 的值
    • 获取某个文档的统计信息,例如获取页数、注释等
    • 获取或更改文档元数据,因为元数据通常未加密
    • 更改某些类型字段的值:CheckBoxField、RadioButtonField;TextBoxField 和 CombTextField 的值可以更改,但有一些限制
  • 如果可以在不使用 PDF 字符串的情况下定义新对象,则可以添加新对象;例如,您可以将 SquareAnnotation 添加到页面或所有页面

引入了一个新的DecryptionOptions类来表示解密选项。加载加密的 PDF 时,您可以将其作为(可选)参数传递给 GcPdfDocument.Load() 方法。特别是,您可以将DecryptionOptions.ThrowExceptionIfInvalidPassword标志设置为 false(默认情况下为 true),以允许加载受密码保护的 PDF,而无需指定其密码。另一个相关标志是DecryptionOptions.ThrowExceptionIfUnsupportedSecurityOptions。默认情况下也是如此。将其设置为 false 将使 GcPdf 能够加载具有未知或损坏的安全处理程序的文档。

以下代码在不指定密码的情况下向受密码保护的 PDF 添加注释:

using var fs = File.OpenRead("financial-report.pdf");
var doc = new GcPdfDocument();

doc.Load(fs, new DecryptionOptions() { ThrowExceptionIfInvalidPassword = false, ThrowExceptionIfUnsupportedSecurityOptions = false });
// Get the size of the first page:
var page = doc.Pages[0];
var pageSize = page.Size;
// Add a square annotation:
SquareAnnotation sa = new SquareAnnotation();
sa.Page = page;
sa.Rect = new RectangleF(10, 10, pageSize.Width - 20, pageSize.Height - 20);
sa.Color = Color.Red;
doc.Save("AnnotationAdded.pdf");

财务报告原件

修改财务报告

用于处理低级 PDF 原语的新 API(GrapeCity.Documents.Pdf.Spec 和 GrapeCity.Documents.Pdf.Wrappers 命名空间)

在此版本中,GcPdf 引入了一个新的 API,允许熟悉 PDF 规范的开发人员直接访问原始 PDF 对象,这些对象是任何 PDF 文档的构建块。这些包括:

  • PDF 数组,请参阅 GrapeCity.Documents.Pdf.Spec 类型 PdfArray、PdfArrayObject、IPdfArray、IPdfArrayExt 和 GrapeCity.Documents.Pdf.Wrappers.PdfArrayWrapper。
  • PDF bool,请参阅 GrapeCity.Documents.Pdf.Spec 类型 PdfBool、PdfBoolObject、IPdfBool 和 IPdfBoolExt。
  • PDF 词典,请参阅 GrapeCity.Documents.Pdf.Spec 类型 PdfDict、PdfDictObject、IPdfDict、IPdfDictExt 和 GrapeCity.Documents.Pdf.Wrappers.PdfDictWrapper。
  • PDF 名称,请参阅 GrapeCity.Documents.Pdf.Spec 类型 PdfName、PdfNameObject、IPdfName 和 IPdfNameExt。
  • PDF null,请参阅 GrapeCity.Documents.Pdf.Spec 类型 PdfNull、PdfNullObject、IPdfNull 和 IPdfNullExt。
  • PDF 编号,请参阅 GrapeCity.Documents.Pdf.Spec 类型 PdfNumber、PdfNumberObject、IPdfNumber 和 IPdfNumberExt。
  • PDF 参考,请参阅 GrapeCity.Documents.Pdf.Spec 类型 PdfRef、PdfRefObject、IPdfRef 和 IPdfRefExt。
  • PDF 流,请参阅 GrapeCity.Documents.Pdf.Spec.PdfStreamObjectBase。
  • PDF 字符串,请参阅 GrapeCity.Documents.Pdf.Spec 类型 PdfString、PdfStringObject、IPdfString 和 IPdfStringExt。

例如,这些新的 API 可用于访问有时由 PDF 制作者添加但未在 PDF 规范中描述的自定义属性。例如,DocumentInfo 对象是 PDF 字典。PDF 规范列出了该字典中可以出现的属性(创建者、作者等)。尽管如此,在许多现实生活中的 PDF 文件中,DocumentInfo 字典包含 PDF 规范中不存在的“SourceModified”属性。GrapeCity.Documents.Pdf.Spec 命名空间中的类型现在允许开发人员访问/编辑此类自定义项目。

有关 GrapeCity.Documents.Pdf.Spec 和 GrapeCity.Documents.Pdf.Wrappers 命名空间的更多信息,请参阅 GcPdf 参考。

示例:获取图像属性

使用上面的新 API,现在可以使用从流中检索的图像来处理由图像扫描仪创建的许多 PDF(其中大多数每页仅包含一个 JPEG 或 G4 TIFF 图像)。GcPdf 包含新的PdfImageInfo类,它是新的PdfDictWrapper对象的后代。该类包含许多允许获取底层 PDF 流对象的属性/数据的方法。此添加将检索流图像并直接解压缩或处理图像。

您可以检索以下图像属性:

  • 直接检索每个页面上每个图像的流(使用 GetImages() 检索)
  • 检索上述图像流的压缩格式(Filter)
  • 检索上述图像流的黑白信息(Decode或BlackIs1)
  • 检索可以识别上述图像流颜色的信息(ColorSpace 或 BitsPerComponent)
  • 检索流和每个掩码(ImageMask)的信息
  • 和更多

以下代码从 PDF 流中检索图像属性:

using (FileStream fs = new FileStream(@"..\..\..\06-1.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
{GcPdfDocument doc = new GcPdfDocument();doc.Load(fs);GcPdfDocument doc = new GcPdfDocument();doc.Load(fs);var imgs = doc.GetImages();// Get the info about the first image in the PDF// (we know there is one image, so no index checks for example's simplicity sake):PdfImage pi = (PdfImage) imgs[0].Image; // NOTE: no cast here, PdfImageBase is the type of the Image property.Console.WriteLine($"PdfImage object ID: {pi.ObjID}");// The PdfImage is a descendant of PdfDictWrapper object it has a lot of methods// which allow to get properties/data of underlying PDF stream objectusing (PdfStreamInfo psi = pi.GetPdfStreamInfo()){Console.WriteLine($"    Image stream length: {psi.Stream.Length}");Console.WriteLine($"        ImageFilterName: {psi.ImageFilterName}");Console.WriteLine($"ImageFilterDecodeParams: {psi.ImageFilterDecodeParams}");// dump content of ImageFilterDecodeParamsforeach (var kvp in psi.ImageFilterDecodeParams.Dict){Console.WriteLine($"{kvp.Key}: {kvp.Value}");}// example how to get value of BlackIs1:var blackIs1 = psi.ImageFilterDecodeParams.GetBool(PdfName.Std.BlackIs1, null);Console.WriteLine($"BlackIs1: {blackIs1}");}// dump properties of PdfImage dictionaryConsole.WriteLine();Console.WriteLine("Properties of PdfImage dictionary:");foreach (KeyValuePair<PdfName, IPdfObject> kvp in pi.PdfDict.Dict){Console.WriteLine($"{kvp.Key}: {kvp.Value}");} var cs = pi.Get<IPdfObject>(PdfName.Std.ColorSpace);Console.WriteLine($"ColorSpace: {cs.GetType().Name} {cs}");var bpc = pi.Get<IPdfObject>(PdfName.Std.BitsPerComponent);Console.WriteLine($"BitsPerComponent: {bpc?.GetType().Name} {bpc}");
}
复制

输出显示检索到的所有图像属性。

图像属性

在文本字段中设置格式

GcPdf 现在允许用户使用添加到 TextField、CombTextField、ComboBoxField 类的新直接方法SetPercentFormat、SetNumberFormat、SetDateFormat、SetTimeFormat、SetSpecialFormat 方法以直观的方式指定 TextField 的日期、时间、数字格式和特殊格式。新方法将支持设置类似于 Acrobat 中的 TextField 属性的属性。

添加了新的枚举SpecialFormatCurrencySymbolStyleNumberNegativeStyleNumberSeparatorStyle 。这些在上述方法中用作参数。

以下代码使用新方法和参数设置 TextField 上的数值:

GcPdfDocument doc = new GcPdfDocument();
var p = doc.NewPage();
var g = p.Graphics;TextField result = new TextField();
result.Widget.Page = p;
result.Widget.Rect = new System.Drawing.RectangleF(100,100,100,100);
result.Widget.Border.Width = 1;result.SetNumberFormat(2, Field.NumberSeparatorStyle.Dot, Field.NumberNegativeStyle.ShowParentheses, "\u20ac", Field.CurrencySymbolStyle.BeforeNoSpace);result.Value = "12345.67f";
result.SetNumberValue(12345.67f, 2, Field.NumberSeparatorStyle.Dot, Field.NumberNegativeStyle.None, "$", Field.CurrencySymbolStyle.BeforeNoSpace);p.Doc.AcroForm.Fields.Add(result);doc.Save("NumberTextField.pdf");

GrapeCity 文档 PDF 查看器 (GcPdfViewer)

文档列表面板增强功能

GcPdfViewer 现在支持使用自定义 HTML 标记增强文档列表面板。GcPdfViewer 在DocumentListItem类型中提供namepathtitlePreviewContent属性,允许用户指定自定义 HTML 标记来表示文档列表。以下是属性的简要说明:

  • 名称 - 显示文档列表项的名称
  • 路径 - PDF 文档的绝对或相对 URL
  • 标题 - 项目工具提示
  • PreviewContent - 文档列表中用作预览内容的 HTML 内容

现有的客户端属性和方法 - documentListUrl选项以及addDocumentListPanel 和loadDocumentList 方法已得到增强,可以接受DocumentListItem作为参数来指定文档列表项的预定义列表。

以下代码将属性设置为文档列表面板中的第一个图块“Finance”:

const options = { workerSrc: "/documents-api-pdfviewer/demos/product-bundles/build/gcpdfviewer.worker.js",supportApi: {apiUrl: window.top.SUPPORTAPI_URL,token: window.top.SUPPORTAPI_TOKEN,webSocketUrl: false},restoreViewStateOnLoad: false};const baseAssetsPath = "/documents-api-pdfviewer/demos/product-bundles/assets/";options.documentListUrl = [ { path: baseAssetsPath + "pdf/documents-list/financial-report.pdf",title: "Finance",previewContent: renderPreviewCard("Finance", "View Financial, budget reports and collaborate over them.", baseAssetsPath + "images/preview/svg/Finance.svg")},
];
复制

文件列表面板

键盘快捷键

GcPdfViewer 支持多种键盘快捷键,可以提高在查看器中处理 PDF 文档的效率。GcPdfViewer 还支持重新定义、禁用、覆盖和删除默认键盘快捷键,以及将默认键盘快捷键绑定到其他键,并使用 ViewerOptions 类的快捷方式选项通过 API 创建自定义键盘快捷键。 

GcPdfViewer 还支持重新定义、禁用、覆盖和删除默认键盘快捷键,以及将默认键盘快捷键绑定到其他键,并使用 ViewerOptions 类的快捷键选项通过 API 创建自定义键盘快捷键。 

以下代码有助于将holdToPan 操作绑定到“P”键:

// Bind the "P" shortcut to the holdToPan action and leave the Ctrl+P shortcut for the "print" action.
viewer.options.shortcuts["P"] = [{ ctrl: true, tool: "print" }, { tool: "holdToPan" }];

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

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

相关文章

springBoot整合RabbitMq实现手动确认消息

如何保证消息的可靠性投递&#xff1f; 1.保证生产者向broke可靠性投递&#xff0c;开启ack投递成功确认&#xff0c;如果失败的话进行消息补偿 /*** author yueF_L* date 2023-08-10 01:32* ConfirmCallback&#xff1a;消息只要被 RabbitMQ broker 接收到就会触发confirm方…

logback日志框架学习(1)介绍logback

首先说下对日志框架的感受&#xff0c;很多人slf4j-api slf4j-simple logback-core logbak-classic log4j logj42很多的日志框架&#xff0c;控制台各种输出的时候日志框架warn error&#xff0c;有时候还不能输出日志。究其原因&#xff0c;大家都觉得日志框架不太重要&#x…

NSS [UUCTF 2022 新生赛]ez_upload

NSS [UUCTF 2022 新生赛]ez_upload 考点&#xff1a;Apache解析漏洞 开题就是标准的上传框 起手式就是传入一个php文件&#xff0c;非常正常的有过滤。 .txt、.user.ini、.txxx都被过滤了&#xff0c;应该是白名单或者黑名单加MIME过滤&#xff0c;只允许.jpg、.png。 猜测二…

阿里云服务器部署RabbitMQ流程

阿里云百科分享使用阿里云服务器部署RabbitMQ流程&#xff0c;RabbitMQ是实现了高级消息队列协议&#xff08;AMQP&#xff09;的开源消息代理软件&#xff0c;用于在分布式系统中存储转发消息&#xff0c;有良好的易用性、扩展性和高可用性。本文介绍如何通过ECS实例部署Rabbi…

四化智造MES(API)与金蝶云星空对接集成派工作业打通生产订单新增

四化智造MES&#xff08;API&#xff09;与金蝶云星空对接集成派工作业打通生产订单新增 对接系统&#xff1a;四化智造MES&#xff08;API&#xff09; MES建立统一平台上通过物料防错防错、流程防错、生产统计、异常处理、信息采集和全流程追溯等精益生产和精细化管理&#x…

objectMapper.configure 方法的作用和使用

objectMapper.configure 方法是 Jackson 提供的一个用于配置 ObjectMapper 对象的方法。ObjectMapper 是 Jackson 库的核心类&#xff0c;用于将 Java 对象与 JSON 数据相互转换。 configure 方法的作用是设置 ObjectMapper 的配置选项&#xff0c;例如设置日期格式、设置序列…

年轻代频繁GC ParNew导致http变慢

背景介绍 某日下午大约四点多&#xff0c;接到合作方消息&#xff0c;线上环境&#xff0c;我这边维护的某http服务突然大量超时&#xff08;对方超时时间设置为300ms&#xff09;&#xff0c;我迅速到鹰眼平台开启采样&#xff0c;发现该服务平均QPS到了120左右&#xff0c;平…

1.Fay-UE5数字人工程导入(UE数字人系统教程)

非常全面的数字人解决方案(含源码) Fay-UE5数字人工程导入 1、工程下载&#xff1a;xszyou/fay-ue5: 可对接fay数字人的ue5工程 (github.com) 2、ue5下载安装&#xff1a;Unreal Engine 5 3、ue5插件安装 依次安装以下几个插件 4、双击运行工程 5、切换中文 6、检…

Zookeeper与Kafka

Zookeeper与Kafka 一、Zookeeper 概述1.Zookeeper 定义2.Zookeeper 工作机制3.Zookeeper 特点4.Zookeeper 数据结构5.Zookeeper 应用场景6.Zookeeper 选举机制 二、部署 Zookeeper 集群1.准备 3 台服务器做 Zookeeper 集群2.安装 Zookeeper3.拷贝配置好的 Zookeeper 配置文件到…

Could not resolve host: mirrorlist.centos.org; Unknown error解决方法

今天服务器安装完CentOS系统后&#xff0c;安装网络的时候&#xff0c;出现无法联网yum yum -y install net-tools 以上代码无法运行并报错&#xff0c;这里我要提醒大家&#xff0c;如果在初始安装的时候选中安装网络工具模块就不用在安装net-tools了&#xff0c;因为我选中…

k8s集群网络插件搭建——————解决集群notready(k8s1.20版本,docker24)

前面已经提到&#xff0c;在初始化 k8s-master 时并没有网络相关配置&#xff0c;所以无法跟 node 节点通信&#xff0c;因此状态都是“NotReady”。但是通过 kubeadm join 加入的 node 节点已经在k8s-master 上可以看到。 那么&#xff0c;这个时候我们该怎么办呢&#xff1f;…

开工大吉|华润鞋业二期自动化改造项目开工典礼圆满举行

2023年8月10日上午&#xff0c;山东百华鞋业有限公司择良辰吉时隆重举行了华润鞋业二期厂房动工仪式&#xff0c;公司总经理郭兴梅女士携公司管理层代表和施工单位代表参加了动工仪式。 根据公司发展规划&#xff0c;对未来发展的美好期许&#xff0c;以及公司生产与研发保持的…

Highcharts for Python Crack

Highcharts for Python Crack 修改了将数据点序列化为JavaScript文字对象的方式。 现在&#xff0c;如果它们的配置属性是Highcharts&#xff08;JS&#xff09;在JavaScript数组表示法中支持的属性&#xff0c;则它们被序列化为JavaScript数组。 否则&#xff0c;代码会回退…

QT学习笔记-QT安装oracle oci驱动

QT学习笔记-QT安装oracle oci驱动 0、背景1、环境以及条件说明2、编译驱动2.1 下载oracle instant client2.2 编译qt oci驱动2.2.1 修改oci.pro2.2.2 MinGW64构建套件编译2.2.3 MSVC2019_64构建套件编译 3、访问数据库运行成功 0、背景 在使用QT开发应用的过程中&#xff0c;往…

全排列——力扣46

文章目录 题目描述解法:回溯题目描述 解法:回溯 //version 1 vector<vector<int>> permute(<

Stable Diffuion webui Mac版本安装过程

系统环境 操作系统&#xff1a;MacOS Ventura13.5 芯片&#xff1a;Apple M2 Max Python: 3.10 安装前置准备 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git注意事项&#xff1a;修改源码内全部 git clone 链接&#xff0c;设置代理 https://ghpr…

【小程序】Canvas 画布分享海报

成品效果图 可以通过切换下面图片形成不同的海报背景分享图 <template><view>// type"2d"必须加<canvas type"2d" :style"{width:Artwidth px,height:Artheight px, margin:0 auto}" canvas-id"firstCanvas"id&quo…

小兔鲜项目 uniapp (1)

目录 项目架构 uni-app小兔鲜儿电商项目架构 小兔鲜儿电商课程安排 创建uni-app项目 1.通过HBuilderX创建 2.通过命令行创建 pages.json和tabBar案例 uni-app和原生小程序开发区别 用VS Code开发uni-app项目 拉取小兔鲜儿项目模板代码 基础架构–引入uni-ui组件库 操…

STM32CubeMX之freeRTOS互斥量

这是大哥保护小弟的故事 高中低等级的任务 互斥量就是谁要敢插我小弟的队&#xff0c;我就要打他&#xff0c;不能让其他人插我小弟的队 互斥量的使用是默认开启的不用手动开启&#xff01; 最高优先级任务&#xff1a;延时&#xff08;10ms&#xff09;再上厕所 中间&#x…

java静默打印PDF(可实现生产环境下服务器写入PDF模板,然后调用客户端打印机打印)

java静默打印PDF可实现生产环境下服务器写入PDF模板&#xff0c;然后调用客户端打印机打印 一、简需求实现步骤 二、代码实现0、打印模板1、服务器部分 &#xff08;端口&#xff1a;8090&#xff09;1.1、maven依赖1.2、实体1.2.1、接口返回类1.2.2、标签纸页面参数类1.2.3、P…