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 object
      using (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 ImageFilterDecodeParams
            foreach (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 dictionary
      Console.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.mfbz.cn/a/74805.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Stable Diffusion + Deform制作指南

1.安装sd以及deform插件,更新后记得重启 需要安装ffmpeg https://ffmpeg.org/download.html 选择对应版本然后安装 如果是windows需要解压后将ffmpeg的bin目录配置在电脑的环境变量里面。 2.准备一张初始开始图片 3.填写参数,这里面参数要注意,宽高一定是32的倍数。如果填写…

【图像分类】理论篇 (4)图像增强opencv实现

随机旋转 随机旋转是一种图像增强技术&#xff0c;它通过将图像以随机角度进行旋转来增加数据的多样性&#xff0c;从而帮助改善模型的鲁棒性和泛化能力。这在训练深度学习模型时尤其有用&#xff0c;可以使模型更好地适应各种角度的输入。 原图像&#xff1a; 旋转后的图像&…

恒运资本:CPO概念发力走高,兆龙互联涨超10%,华是科技再创新高

CPO概念15日盘中发力走高&#xff0c;截至发稿&#xff0c;华是科技涨超15%再创新高&#xff0c;兆龙互联涨逾11%&#xff0c;中贝通讯涨停&#xff0c;永鼎股份、太辰光涨超5%&#xff0c;天孚通讯涨逾4%。 消息面上&#xff0c;光通讯闻名咨询机构LightCounting近日发布的202…

【LeetCode】《LeetCode 101》第十一章:妙用数据结构

文章目录 11.1 C STL11.2 数组448. 找到所有数组中消失的数字&#xff08;简单&#xff09;48. 旋转图像&#xff08;中等&#xff09;74. 搜索二维矩阵&#xff08;中等&#xff09;240. 搜索二维矩阵 II&#xff08;中等&#xff09;769. 最多能完成排序的块&#xff08;中等…

ChatGPT or BingChat

你相信我们对大模型也存在「迷信权威」吗&#xff1f; ChatGPT 的 GPT-4 名声在外&#xff0c;我们就不自觉地更相信它&#xff0c;优先使用它。但我用 ChatALL 比较 AI 大模型们这么久&#xff0c;得到的结论是&#xff1a; ChatGPT GPT-4 在大多数情况下确实是最强&#xf…

Element组件浅尝辄止4:Button组件

Button按钮组件&#xff1a;用途太广泛了&#xff0c;几乎参与到了日常开发中的方方面面 1.如何使用&#xff1f;How? //使用type、plain、round和circle属性来定义 Button 的样式。<el-row><el-button>默认按钮</el-button><el-button type"primar…

阿里云ACP知识点

前言&#xff1a;记录ACP错题 1、在创建阿里云ECS时&#xff0c;每台服务器必须要包含_______用来存储操作系统和核心配置。 系统盘&#xff08;不是实例&#xff0c;实例是一个虚拟的计算环境&#xff0c;由CPU、内存、系统盘和运行的操作系统组成&#xff1b;ESC实例作为云…

【RabbitMQ与SpringBoot集成测试收发消息】

【RabbitMQ与SpringBoot集成测试收发消息】 一、环境说明二、实验步骤三、小结 一、环境说明 安装环境&#xff1a;虚拟机VMWare Centos7.6 Maven3.6.3 JDK1.8RabbitMQ版本&#xff1a;rabbitmq-server-3.8.8-1.el7.noarch.rpm编程工具Idea 运行JDK为17 二、实验步骤 在Rab…

九州未来参与编制的开源领域3项团体标准获批发布

日前&#xff0c;中电标2023年第21号团体标准公告正式发布&#xff0c;其中由九州未来参与编制的3项开源领域团体标准正式获批发布&#xff0c;于2023年8月1日正式实施。 具体内容如下&#xff1a; 《T/CESA 1269-2023 信息技术 开源 术语与综述》&#xff0c;本文件界定了信息…

AWK +iptables+shell实战脚本案例

目录 一、在Centos下安装httpd 查看安装是否成功 重启httpd 查看80端口是否开放 在主机上查询 查看防火墙 在浏览器中查询主机IP地址 查看日志是否生成 二、AWK iptablesshell实战脚本案例 1、封堵扫描器 (1) 开始扫描器 特别注意&#xff1a;在Vim中尽量不要使用空格…

python_PyQt5运行股票研究python方法工具V1.2_增加折线图控件

承接【python_PyQt5运行股票研究python方法工具V1.1_增加表格展示控件】 地址&#xff1a;python_PyQt5运行股票研究python方法工具V1.1_增加表格展示控件_程序猿与金融与科技的博客-CSDN博客 目录 结果展示&#xff1a; 代码&#xff1a; 示例py文件代码&#xff08;低位股…

ubuntu 安装 cuda

ubuntu 安装 cuda 初环境与设备在官网找安装方式 本篇文章将介绍ubuntu 安装 CUDA Toolkit CUDA Toolkit 是由 NVIDIA&#xff08;英伟达&#xff09;公司开发的一个软件工具包&#xff0c;用于支持并优化 GPU&#xff08;图形处理器&#xff09;上的并行计算和高性能计算。它…

mysql的安装

首先双击mysql的安装包 双击安装包之后就会出现下面这种情况&#xff1b; 然后就会出现下面这个页面 选择developer default开发者模式&#xff0c;然后点击next 然后再点击next 再点击yes 点击excute&#xff0c;点击完之后需要稍等几分钟才能完成 上一步安装好之后点击n…

EthGlobal 巴黎站 Chainlink 获奖项目介绍

在 Web3 中&#xff0c;每一周都至关重要。项目的发布、版本的发布以及协议的更新以惊人的速度推出。开发者必须保持学习&#xff0c;随时了解最新的工具&#xff0c;并将所有他们所学的东西&#xff08;无论是旧的还是新的&#xff09;联系起来&#xff0c;以构建推动 Web3 技…

电脑垃圾清理怎么做?记住这5个方法!

“我的电脑用了快一年了吧&#xff01;现在感觉电脑里很多垃圾文件&#xff0c;但又害怕在删除这些垃圾文件时会将一些重要的文件一起删除掉。所以不敢对电脑进行清理。想问下大家平常有没有好用方法去清理电脑呀&#xff1f;感谢&#xff01;” 随着电脑使用时间的推移&#x…

AD23使用笔记

1. 如何修改原理图的页面 2. 原理图DRC&#xff1a;快捷键T D ; 或者&#xff1a;菜单→工程→validate pcb project,,,,,,,,, Altium Designer原理图错误编译检查_ad原理图如何编译和查错_y惘然__的博客-CSDN博客 3.

开源数据库Mysql_DBA运维实战 (DML/DQL语句)

DML/DQL DML INSERT 实现数据的 插入 实例&#xff1a; DELETE 实现数据的 删除 实例&#xff1a; UPDATE 实现数据的 更新 实例1&#xff1a; 实例2&#xff1a; 实例3&#xff1a; DQL DML/DQL DML语句 数据库操纵语言&#xff1a; 插入数据INSERT、删除数据DELE…

掌握Python的X篇_33_MATLAB的替代组合NumPy+SciPy+Matplotlib

numPy 通常与 SciPy( Scientific Python )和 Matplotlib (绘图库)一起使用&#xff0c;这种组合广泛用于替代 MatLab&#xff0c;是一个强大的科学计算环境&#xff0c;有助于我们通过 Python 学习数据科学或者机器学习。 文章目录 1. numpy1.1 numpy简介1.2 矩阵类型的nparra…

SQL | 分组数据

10-分组数据 两个新的select子句&#xff1a;group by子句和having子句。 10.1-数据分组 上面我们学到了&#xff0c;使用SQL中的聚集函数可以汇总数据&#xff0c;这样&#xff0c;我们就能够对行进行计数&#xff0c;计算和&#xff0c;计算平均数。 目前为止&#xff0c…

【JavaWeb】实训的长篇笔记(上)

JavaWeb的实训是学校的一门课程&#xff0c;老师先讲解一些基础知识&#xff0c;然后让我们自己开发一个比较简单的Web程序。可涉及的知识何其之多&#xff0c;不是实训课的 3 周时间可以讲得完的&#xff0c;只是快速带过。他说&#xff1a;重点是Web开发的流程。 我的实训草草…