PDF文档电子公章的初试

2023-05-16

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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何让我的应用程序出现在应用程序选择器中?

    我想宣传一下 我的应用程序能够查看 pdf 文件 这样当从文件管理器中选择 pdf 文件时 它就会出现在应用程序选择器中 这是我的意图过滤器的样子
  • 在solr中获取pdf搜索结果的页码

    我正在构建一个 Web 应用程序 用户可以在其中搜索 pdf 文档并使用 pdf js 查看它们 我想显示搜索结果 其中包含找到搜索词的段落的简短片段以及用于在右侧页面打开文档的链接 所以我需要的是每个搜索结果的页码和简短的文本片段 我正在
  • 如何使用PDFBOX确定文本的人工粗体样式、人工斜体样式和人工轮廓样式

    我正在使用 PDFBox 来验证 pdf 文档 检查 PDF 中存在的以下类型的文本有一定要求 人工粗体样式文本 人造斜体样式文本 人工轮廓样式文本 我在 PDFBOX api 列表中进行了搜索 但找不到此类 api 任何人都可以帮助我并告
  • PDF解析提取CheckBox字段值

    我有一个 PDF 文档 想要从 PDF 和 Chackbox 和单选按钮类型字段值中提取内容 PDF 文件的版本为 1 4 Acrobat 5 x 可以从网络浏览器生成 CheckBox appear such types in PDF 我
  • 使用 iText 某些 pdf 文件水印不显示

    我们公司使用 iText 在一些 pdf 表格上标记一些水印文本 不是图像 我注意到 95 的表格可以正确显示水印 大约 5 则不能 我测试了一下 复制了2个原始pdf文件 一个被标记为ok 另一个不ok 然后通过一个小程序进行测试 结果相
  • Django FileResponse PDF - 前端的 pdf 字体更改 - (Django DRF 和 React.js)

    我在我的应用程序中使用 Django Rest Framework 和 React js 作为应用程序的一部分 我在后端生成 pdf 然后将它们发送到前端进行显示 这个功能是有效的 如果不是因为我的前端 pdf 中的字体看起来不同的话 在我
  • pyPDF通过django合并并显示为httpresponse

    我在合并 pyPDF 逻辑以将两个 pdf 文件合并到我的 django 站点时遇到问题 我编写了在本地服务器上的 python 文件中运行时用于合并文件的代码 但我需要明确识别要合并的文件 from pyPdf import PdfFil
  • Python PIL 由于某种原因无法打开 PDF

    所以我的程序能够打开 PNG 但不能打开 PDF 所以我这样做只是为了测试 但它仍然无法打开 甚至是一个简单的 PDF 我不知道为什么 from PIL import Image with Image open r Adams K a pd
  • 如何将嵌入的 ICC 配置文件信息转储为 PDF? (命令行或 GUI 工具)

    它在那里命令行或 GUI 工具转储有关 ICC 配置文件 颜色转换的信息 这些信息是在 Illustrator 的 PDF 导出对话框中设置的 PDF 的颜色管理和 PDF X 选项 选项 Illustrator 的 PDF 颜色管理和 P
  • 在 WebView 中打开 PDF 文件

    大约 2 天 我尝试在我的自定义中打开 PDF 文件WebvView 这是我的WebView code import android app AlertDialog import android app ProgressDialog imp
  • C# 3.0 使用MemoryStream将itextsharp pdf保存到数据库

    我正在尝试将 itextsharp 生成的 pdf 文件保存到数据库 但是 到目前为止我还没有成功 我正在使用 Linq to sql 这是代码 MemoryStream ms new MemoryStream Document d new
  • 使用带有图像的 C# 代码生成 pdf 文件的大小限制是多少?

    我正在使用 Web 应用程序使用 C 代码生成 PDF 文件 PDF 文件包含 tiff 图像 如果包含图像的文件夹大小超过 1GB 则浏览器将自动关闭 使用 C 代码生成 PDF 文件的图像大小限制是多少 您问题的答案取决于三个参数 PD
  • 使用cmd批处理文件获取pdf中的页数

    我可以看到使用 C PHP 和其他语言获取 pdf 中的页数有很多问题 但我想知道使用批处理文件或 cmd 是否有一种简单的方法来获取页数 Using pdftk http www accesspdf com pdftk pdftk my
  • 使用 Quartz 创建 PDF 注释 (iOS)

    有人设法使用 Quartz 在现有 PDF 中编写自定义注释吗 我已经使用 CGPDFDocumentRef 等渲染了 PDF 现在工作正常 我成功地阅读了 Annots 字典 if CGPDFDictionaryGetArray page
  • 使用 PHP 创建图表并导出为 PDF

    我正在寻找有关使用 PHP 创建图表的建议 我还希望能够将这些图表导出到 PDF 文档 我目前正在使用谷歌图表 但我不喜欢将我的所有信息发送到谷歌的想法 我更喜欢自己的托管解决方案 我见过很多 Flash 解决方案 但我不知道有什么方法可以
  • 使用 JavaScript 生成 PDF 文件

    我正在尝试将 XML 数据从网页转换为 PDF 文件 并且希望能够完全在 JavaScript 中完成此操作 我需要能够绘制文本 图像和简单的形状 我希望能够完全在浏览器中完成此操作 我刚刚写了一个名为jsPDF https github
  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • 如何从 pdf C# 中获取具有特定颜色的文本

    我必须将 pdf 文件中的数据放入特定的数据库结构中 这要求我能够从 pdf 文件中获取某些数据 由于 pdf 没有任何标签等 我想知道是否可以根据颜色获取文本 比如说我想要所有的红色文本 或者我想要文档中的所有斜体文本 这在 C 中可能吗
  • 在 Flash Player 10 中打开 pdf

    我需要在 Flash Player 10 中打开 PDF 该 swf 不会在浏览器中运行 并且系统上不会有 adobe reader 程序 我需要知道是否可以在 Flash 播放器中打开 PDF 而无需以任何方式进行转换 我在谷歌上搜索了无
  • 使用 mupdf android 库导航到特定页面

    我如何使用 muPDF 库导航到特定页面 或者有没有办法让图书馆不记得我最后在那个pdf文件中浏览的是哪一页 Uri uri Uri parse path Intent intent new Intent MainActivity getC

随机推荐

  • 深入了解Vue.js的作用域插槽

    作用域槽是Vue js的一个有用特性 xff0c 它可以使组件更加通用和可重用 唯一的问题是它们很难理解 试着让你的头在父母和孩子的范围内交织 xff0c 就像解决一个棘手的数学方程 当你不能很容易地理解某件事时 xff0c 一个好的方法是
  • JavaScript常用基础算法

    一个算法只是一个把确定的数据结构的输入转化为一个确定的数据结构的输出的function 算法内在的逻辑决定了如何转换 基础算法 一 排序 1 冒泡排序 冒泡排序function bubbleSort arr for var i 61 1 l
  • HTML中的meta标签属性的使用

    之前学习前端中 xff0c 对meta标签的了解仅仅只是这一句 lt meta charset 61 34 UTF 8 34 gt 但是打开任意的网站 xff0c 其head标签内都有一列的meta标签 下面我们就来详细介绍一下meta标签
  • 移动端H5开发常用小技巧(总结)

    本篇文章给大家整理一些在移动端H5开发常见的问题给大家做下分享 xff0c 这里很多是在开发过程中遇到的大坑或者遭到过吐糟的问题 xff0c 希望能给大家带来或多或少的帮助 html 篇 常用的meta属性设置 meta对于移动端的一些特殊
  • JavaScript中Switch语句的使用方法

    除了if else之外 xff0c JavaScript还有一个称为switch语句的功能 switch是一种条件语句 xff0c 它将针对多种可能的情况评估表达式 xff0c 并根据匹配的情况执行一个或多个代码块 switch语句与包含许
  • 如何构建可运行的JavaScript规范

    编程不仅仅是给计算机下达如何完成一项任务的指令 xff0c 它还包括以一种精确的方式与他人交流思想 xff0c 甚至是与未来的自己 这样的交流可以有多个目标 xff0c 也许是为了共享信息 xff0c 或者只是为了更容易地修改 如果你不理解
  • javascript中函数的5个高级技巧

    函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块 函数对任何一门语言来说都是一个核心的概念 xff0c 在javascript中更是如此 本文将深入介绍函数的5个高级技巧 作用域安全的构造函数 构造函数其实就是一个使用new操作符
  • 理解JavaScript中的原型和继承

    本文主要讲了原型如何在JavaScript中工作 xff0c 以及如何通过 Prototype 所有对象共享的隐藏属性链接对象属性和方法 xff1b 以及如何创建自定义构造函数以及原型继承如何工作以传递属性和方法值 介绍 JavaScrip
  • 大学毕业后转行软件测试我后悔了

    来自一篇新学员的留言 大学本科幼师专业 xff0c 家里人都想让我考教师资格证 xff0c 等毕业了当一名人民教师 xff0c 说这个职业是一辈子的铁饭碗 xff0c 风吹不着雨淋不到 xff0c 还有寒暑假 xff0c 找个离家近的 xf
  • 分享5个JS函数的高级技巧

    函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块 函数对任何一门语言来说都是一个核心的概念 xff0c 在javascript中更是如此 本文将深入介绍函数的5个高级技巧 作用域安全的构造函数 构造函数其实就是一个使用new操作符
  • 详解vue.js中watch的使用

    在vue中 xff0c 使用watch来响应数据的变化 watch的用法大致有三种 下面代码是watch的一种简单的用法 xff1a lt input type 61 34 text 34 v model 61 34 cityName 34
  • Vue中值得关注的21个开源项目(推荐)

    Vue 相对不于 React 的一个优点是它易于理解和学习 xff0c 且在国内占大多数 咱们可以在 Vue 的帮助下创建任何 Web 应用程序 因此 xff0c 时时了解一些新出现又好用的Vue 开源项目也是挺重要 xff0c 一方面可以
  • javaScript面向对象的三个基本特征介绍

    了解过面向对象的同学应该都知道 xff0c 面向对象三个基本特征是 xff1a 封装 继承 多态 xff0c 但是对于这三个词具体可能不太了解 对于前端来讲接触最多的可能就是封装与继承 xff0c 对于多态来说可能就不是那么了解了 封装 在
  • 7个实用的CSS background-image小技巧

    xff08 推荐教程 xff1a CSS教程 xff09 background image可能是我们所有人 xff08 前端开发人员 xff09 在我们的职业生涯中至少使用过几次的CSS属性之一 大多数人认为背景图像没有什么不寻常的 xff
  • 值得收藏的css grid构建复杂布局的小技巧!

    xff08 推荐教程 xff1a CSS教程 xff09 网格布局是现代CSS中最强大的功能之一 使用网格布局可以帮助我们在没有任何外部 UI 框架的情况下构建复杂的 快速响的布局 在这篇文章中 xff0c 将会介绍所有我们需要了解的 CS
  • 10个值得了解的Chrome开发工具和技巧

    1 模拟慢速网络和慢速设备 我们可能习惯了在城市的网速 xff0c 那是杠杠的 xff0c 并不意味网速在中国哪个都一样的 xff0c 在一些偏远地方 xff0c 网速依然慢的可怜 xff0c 所以有时候我们所做的产品是需要考虑网速慢的情况
  • JS中判断变量是否为数字方法

    推荐教程 xff1a JavaScript视频教程 JavaScript 是一种动态类型语言 xff0c 这意味着解释器在运行时确定变量的类型 实际上 xff0c 这也允许我们在相同的代码中使用相同的变量来存储不同类型的数据 如果没有文档和
  • vue+webpack2实现路由懒加载的方法介绍

    下面Vue js教程栏目给大家介绍一下vue 43 webpack2实现路由的懒加载的方法 有一定的参考价值 xff0c 有需要的朋友可以参考一下 xff0c 希望对大家有所帮助 当打包构建应用时 xff0c Javascript 包会变得
  • JS Math对象的10 个实用方法

    推荐教程 xff1a JavaScript视频教程 JavaScript中的math 对让我们能够对执行一些数学操作 它具有数学常数和函数的属性和方法 在今天的文章中将介绍 Math对象的一些有用方法 1 Math min Math min
  • PDF文档电子公章的初试

    PART 1 大家在日常生活中经常会接触到电子公章 xff0c 比如电子发票上一般会包含电子公章信息 xff0c 比如下图发票中就带有两个电子公章 xff0c 顶部的公章是普通的图形公章 xff0c 右下角的电子公章不仅包含图形公章还包含了