pdf怎么盖电子公章(PDF文档电子公章的初试)

PART.1大家在日常生活中经常会接触到电子公章,比如电子发票上一般会包含电子公章信息,比如下图发票中就带有两个电子公章,顶部的公章是普通的图形公章,右下角的电子公章不仅包含图形公章还包含了时间戳电子签名信息,图形公章用于显示直观信息,其发票的合法性由电子签名保证,其电子签名符合中华人民共和国电子签名法,因此其具有法律效力,接下来我们就来聊聊关于pdf怎么盖电子公章?以下内容大家不妨参考一二希望能帮到您!

pdf怎么盖电子公章(PDF文档电子公章的初试)

pdf怎么盖电子公章

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();

更多学习资料戳下方!!!

Redirecting...

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页