PART.1

大家在日常生活中经常会接触到电子公章,比如电子发票上一般会包含电子公章信息,比如下图发票中就带有两个电子公章,顶部的公章是普通的图形公章,右下角的电子公章不仅包含图形公章还包含了时间戳电子签名信息,图形公章用于显示直观信息,其发票的合法性由电子签名保证,其电子签名符合中华人民共和国电子签名法,因此其具有法律效力。

PART.2

在本文给大家展示在Java程序中如何给Pdf文档加盖图形公章的同时增加网络时间戳电子签名的,签名最终效果图如下所示,在开展工作前需要准备一个.pfx格式的电子签名文件,和图形公章.png格式文件。文中使用spire框架完成PDF文件的签章工作。

PdfDocument pdf = new PdfDocument();
String filename="~/Tmp/Window.pdf";
System.out.println(new File(filename).exists());
pdf.loadFromFile(filename);

2. 加载签名文件到PdfCertificate,并初始化电子签名对象PdfSignature

String caFile="/Users/walker/Tmp/certifation2/server.pfx";
PdfCertificate cert = new PdfCertificate(caFile,"likuo.dev");
PdfSignature signature = new PdfSignature(pdf, pdf.getPages().get(1), cert, "电子数据签名");

3. 指定电子签名放在当前页的哪个位置

PdfSignature signature = new PdfSignature(pdf, pdf.getPages().get(1), cert, "电子数据签名");
Rectangle2D rect = new Rectangle2D.Float();
//指定横坐标位置
float x= (float) (pdf.getPages().get(0).getActualSize().getWidth() - 340);
//指定纵坐标位置
float y=(float) (pdf.getPages().get(0).getActualSize().getHeight() - 230);
//指定大小面积
Dimension dimension=new Dimension(300, 150);int width
Point2D point2D=new Point2D.Float(x, y);
rect.setFrame(point2D, dimension);
signature.setBounds(rect);

4. 配置签名的可信时间

//沃通时间戳(https://www.wosign.com/basic/timestamp.htm)
//使用第三方存证公司公开的时间戳服务:
String timestampeServerUrl = "http://timestamp.digicert.com";
signature.configureTimestamp(timestampeServerUrl);

5. 设置签名信息

//设置签名模式为图片和详情,
//Sign_Image_And_Sign_Detail:会在签名区域展示指定的公章和签名信息
//Sign_Image_Only:只在签名区域展示图章
//Sign_Detail:只在签名区域展示签名信息
signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail);
signature.setNameLabel("名称:");
signature.setName("李xxx");
signature.setDateLabel("日期:");
signature.setDate(new java.util.Date());
signature.setLocationInfoLabel("地点:");
signature.setLocationInfo("北京市-北京市");
signature.setReasonLabel("原由:");
signature.setReason("电子xxx合同");
signature.setDistinguishedNameLabel("DN: ");
signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName());
signature.setDistinguishedNameLabel("序列:");
signature.setDistinguishedName("20210813第【李】23次");
//指定签章图片
signature.setSignImageSource(PdfImage.fromFile("~.png"));

6. 设置签名字体和权限

//设置签名的字体
signature.setSignDetailsFont(new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN, 9)));
//设置文档权限为禁止更改
signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes);
signature.setCertificated(true);

7. 保存签名后的文档到当前工作目录

File file=new File(filename);
String fileName=file.getName();
if(fileName.contains(".")){pdf.saveToFile(fileName.substring(0,fileName.indexOf("."))+"_Sign.pdf");
}else {pdf.saveToFile(fileName+"_Sign.pdf");
}
//保存文档
pdf.close();

PDF文档电子公章的初试相关推荐

  1. PDF文档签名证书帮助您签署可信的电子合同

    相信很多单位或者个人都收到过类似这样的文档:对方为了显得正式.严谨,直接在 Word 或者 PDF 这种电子文档上粘贴上一个抠出来的印章图案,最不能让人忍的是有的同学竟然用 Word 自带的画图工具在 ...

  2. 在TCL网线接口的彩电上看pdf文档的电子书 845电脑的扫描电子电路图扫描仪图

    在TCL网线接口的彩电上看pdf文档的电子书  845电脑的扫描电子电路图扫描仪图 在TCL网线接口的彩电上看pdf文档的电子书  845电脑的扫描电子电路图扫描仪图 我加的电视是tcl48寸带网线接 ...

  3. 给PDF文档添加电子图章的方法

    在这电子商务遍地走的社会,电子图章被越来越多地应用在合同.发票和其它电子文档中.那么如果不会使用PS,该如何实现在文档中添加电子图章呢?今天就给各位老铁一种为PDF文档添加电子图章的方法. 工具: P ...

  4. 一款可查看和验证电子发票、电子合同、电子公文等PDF文档数字签名的 免费 桌面应用。

    [软件名称] SigReader 签名文档阅读器 [应用平台] Windows / macOS(coming soom) [一句简介] 一款可查看和验证电子发票.电子合同.电子公文等PDF文档数字签名 ...

  5. app canvas渲染后图片黑色_H5 基于 canvas 实现电子签名并生成PDF文档

    (给前端大全加星标,提升前端技能) 转自:coyota666 https://juejin.cn/post/6901273585428463624 前言 电子签名通俗来说就是通过技术手段实现在电子文档 ...

  6. 使用IText组件在PDF文档上绘制椭圆形印章的算法分析及代码分享

    1. 引言 PDF是一种和操作系统及平台无关的.可移植的电子文件格式,其以PostScript语言图像模型为基础,无论在哪种打印机上,都可保证精确的颜色和准确的打印效果.PDF将真实地再现原稿的每一个 ...

  7. H5基于canvas实现电子签名并生成PDF文档

    关注公众号 前端开发博客,回复"加群" 加入我们一起学习,天天进步 作者:coyota666 链接:https://juejin.cn/post/69012735854284636 ...

  8. pdf文档出现乱码如何修改

    现在面临着一个问题,很多时候我们下载的很多文档由于压缩等问题,会有乱码的情况发生.从而 导致我们有些时候无法进行修改,要是Word文档的话还好一点我们可以直接在文档上进行修改处理,但 是由于现在下载的 ...

  9. pdf 加深 扫描件_为什么PDF文档不能像Word文档一样随便编辑?如何免费将PDF转换为Word?...

    PDF文档是一种非常难编辑的文档,有时候我们需要编辑或者复制PDF文档里面的内容,把PDF文档转换为Word就是我们最佳的选择.为什么PDF文档这么难编辑?我们怎么免费把PDF文档转换为Word文档? ...

最新文章

  1. 华谊兄弟出现什么问题_曾经的影视龙头一哥华谊兄弟,为什么如今混得那么惨?...
  2. 第十七课:js数据缓存系统的原理
  3. 判断DataTable为空,获取值,查询数据,datarow转datatable
  4. 取自开源,分享于开源 —— 利用CVE-2017-8890漏洞ROOT天猫魔屏A1
  5. 学习笔记——使用HiveSql建表
  6. jwplayer 初始化设置项
  7. 奥城大学计算机专业,美国硕士双录取院校一览表:
  8. 电动自行车,电动滑板车出口欧盟CE认证怎么办理通过
  9. 之前的账号不见了,@21cn.com的。哪里可以找的回来?
  10. 安装Office 2016 出现 Office 16 Click-to-Run Extensibility Component
  11. Cocos2dx-lua触摸事件处理
  12. 四色问题:证明、推广和应用
  13. codeforces 448CPainting Fence
  14. 柯美smb扫描出现服务器连接错误_柯尼卡美能达bizhub283服务器连接错误的解决方法...
  15. Python-100-days幸运的基督徒
  16. 继百果园、鲜丰水果后,洪九果品凭什么冲击“水果上市第一股”?
  17. 通讯软件002——快速使用modscan进行modbus调试
  18. 皮边油消泡剂消除泡沫另一视角曝光
  19. 三星530换固态硬盘_三星迷你固态硬盘Portable SSD T7 Touch试用 支持指纹识别设备...
  20. vSphere部署黑群晖详细步骤---实现家庭云盘,文件同步等实用功能(上)

热门文章

  1. 看看Gin框架是如何实现的
  2. Jquery事件DELEGATE()方法用法详解
  3. 800份企业管理资料,股权方案模板(收购+优化+激励+代持+分配等),共140M
  4. VTK笔记——医学图像的切片提取(vtkImageReslice)
  5. 全自动软化水设备:25t/h全自动流量型软化水设备特点
  6. 【istioctl】multicluster mesh 管理源码走读
  7. 清华计算机2020保研,清华大学2020届保研情况
  8. 重庆python好找工作吗_在重庆大学城呆四年是怎样的体验?
  9. PANSS 阳性与阴性症状量表
  10. 生成二维码附带文字信息