文档章节

PDF添加数字签名

朝如青丝暮成雪
 朝如青丝暮成雪
发布于 2017/03/29 10:28
字数 283
阅读 18
收藏 0

首先Nuget安装FreeSpire.PDF,添加引用。下面具体代码

这个签名不知道有用么,代码是官网Down下来的,签名上去了,但是我还是可编辑,不知道是本机问题还是,签名验证不搞好的问题,签名是自己用工具生成的.

            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile("D:\\1.pdf");

            //得到签名文件
            string pfxPath = "D://123.pfx";
            PdfCertificate digi = new PdfCertificate(pfxPath, "123");

            //开始处理分页
            for (int i = 0; i < doc.Pages.Count; i++)
            {
                //得到当前页
                PdfPageBase page = doc.Pages[i];
                Console.WriteLine(page.Size.Width + "===" + page.Size.Height);
                //创建签名域
                var signature = new PdfSignature(doc, page, digi, "demo");
                RectangleF rec;
                if (i == 0)
                {
                    rec = new RectangleF(new PointF(380, 600), new SizeF(80, 80));
                }
                else if (i == doc.Pages.Count - 1)
                {
                    //得到根据关键字得到的结果集
                    PdfTextFind result = page.FindText("合计").Finds[0];
                    rec = new RectangleF(result.Position, new SizeF(80, 80));
                }
                else
                {
                    rec = new RectangleF(new PointF(670, 400), new SizeF(80, 80));
                }

                signature.Bounds = rec;
                signature.IsTag = true;
                //数字签名通用名称标签
                signature.DigitalSignerLable = "Digitally signed by";
                //数字签名通用名称
                signature.DigitalSigner = "Harry Hu for Test";
                signature.DistinguishedName = "DN:";
                signature.LocationInfoLabel = "Location:";
                signature.LocationInfo = "London";
                signature.ReasonLabel = "Reason: ";
                signature.Reason = "Le document est certifie";
                signature.DateLabel = "Date: ";
                signature.Date = DateTime.Now;
                signature.ContactInfoLabel = "Contact: ";
                signature.ContactInfo = "123456789";
                signature.Certificated = false;
                signature.ConfigGraphicType = ConfiguerGraphicType.Picture;
                signature.ConfiguerGraphicPath = "D://1.jpg";
                //权限等级
                signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges;
            }
            //保存文档
            doc.SaveToFile("D://Fill.pdf");

© 著作权归作者所有

下一篇: PDF添加图片
朝如青丝暮成雪
粉丝 10
博文 168
码字总数 68399
作品 0
浦东
程序员
私信 提问
研究人员利用旁路攻击窃取Android和iOS上的密钥

以色列特拉维夫大学的研究人员利用旁路攻击(PDF),成功从Android和iOS设备上窃取到用于加密比特币钱包、Apple Pay账号和其他高价值资产的密钥。 研究人员攻击的是常用的椭圆曲线数字签名加...

oschina
2016/03/05
1K
7
centos7.3编译安装OpenSSL1.1.1b

简介 OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。 安装 下载:下载地址 ...

阿dai学长
03/24
0
0
在 Gentoo 中使用 Yubikey PGP 卡

本文环境 OS:Gentoo 内核:4.9.76 gpg (GnuPG): 2.2.4 yubikey-manager: 0.6.0 pcsc-tools: 1.4.27 什么是 PGP 卡? 在加密技术中,PGP 卡是一种智能卡,这种智能卡可以执行加密、解密、...

00%
2018/05/16
0
0
Linux+Apache下如何安装SSL证书

最近很多站长在问linux系统平台下如何安装SSL证书?Linux+Apache下如何安装SSL证书?本文整理了关于Linux+Apache下如何安装SSL证书的相关教程供大家参考,更多SSL证书安装部署问题可咨询沃通C...

一夜九次
01/21
0
0
使用 PGP 保护代码完整性(三):生成 PGP 子密钥

在第三篇文章中,我们将解释如何生成用于日常工作的 PGP 子密钥。 在本系列教程中,我们提供了使用 PGP 的实用指南。在此之前,我们介绍了基本工具和概念,并介绍了如何生成并保护您的主 PG...

作者: Konstantin Ryabitsev
2018/05/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rocketmq之源码分析阶段总结(二十一)

RocketMQ是队列模型的消息中间件,具有高性能,高可靠,高实时,分布式的特点。同时支持分布式事物的两阶段提交,实现在分布式环境的事物操作。 1,nameserv是分布式的部署,并且相互之间不通...

wangshuaixin
5分钟前
0
0
小猿圈linux之在mac上安装 docker

docker极大提高了应用的运行效率,降低了云计算资源供应的成本,同时让应用的部署、测试和分发都变得前所未有的高效和轻松!docker是一个容器,不像kvm,他是真实的系统,启动时,KVM消耗的资...

小猿圈加加
10分钟前
0
0
spring aop 代理private方法 报错的问题分析

spring aop 代理private方法报空指针的问题 这两天做aop切面日志时,发现private方法报空指针。 原切入点配置如下: @Pointcut("@within(org.springframework.web.bind.annotation.RestC...

my_juke
15分钟前
0
0
c 基础教程六:c 循环结构

有的时候,我们可能需要多次执行同一块代码,c 语言提供了如下几种循环,各有特色。 while 循环 for 循环 do-while 循环 while 循环 只要给定的条件为真,C 语言中的 while 循环语句会重复执...

故城以南丶思念不安
34分钟前
4
0
spark 常见操作

为spark DataFrom 添加一个为 空的新列,使用UDF函数 想产生一个IntegerType类型列为null的DataFrame该怎么做。 import org.apache.spark.sql.functions._import org.apache.spark.sql.type...

蜉先生
45分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部