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文档电子公章的初试 的相关文章

  • 在 Apple TV tvOS 中渲染 PDF

    我正在为我的 tvOS 应用程序添加一个附加功能 允许查看应用程序中存储的 PDF 但是 如果没有 UIWebView 我不知道如何做到这一点 我在其他地方提出了问题 并收到了一个来自 Apple 的关于可以使用的 API 的冗长而无助的文
  • 如何使用 pdftk 和 /MediaBox 裁剪 PDF 边距

    I used pdftk解压缩 PDF 然后将其作为文本文件打开 我想编辑 媒体盒领域 就我而言 MediaBox 0 0 612 792 例如 我想减少边距 MediaBox 100 0 512 792 不幸的是它不起作用 我可以改变0
  • 无法在 MARSHAMALLOW 文件选择器中选择 pdf、doc、ppt 等文件

    我正在使用我的 Android 应用程序将 pdf ppt doc 等文件上传到服务器 但在 Marshmallow 中 当文件选择器打开并且我浏览我的 Sdcard 或内部存储时 存在两个问题 1 它显示了所有我无法选择的文件 例如图像
  • 在 Android 中使用 iText 读取或打开 PDF 文件

    我是 Android 应用程序开发新手 使用 iText 我完成了 PDF 创建并在创建的文件上写入 现在我想阅读该 PDF 文件 如何使用 iText 打开或阅读 PDF 文件 例子将是可观的 那么提前 哪个是渲染 PDF 文件的最佳库
  • 数字签名(PKCS#7 - 延迟签名)/自应用签名以来文档已被更改或损坏

    我已经浏览了所有类似的问题 但找不到应用 itextsharp 延迟签名的情况 基本上 我的应用程序使用以下方式签署 pdf 文档PKCS 7由远程 Web 服务创建的签名 我的应用程序向此 Web 服务发送原始文档的哈希值 添加空签名字段
  • 如何使用 iTextSharp 拼合 XFA PDF 表单?

    我假设我需要展平 XFA 表单 以便在使用 Nuance 的 CSDK 的应用程序的 UI 上正确显示 当我现在处理它时 我收到一条通用消息 请等待 如果该消息最终没有被替换 正在寻找一些示例 iTextSharp 代码来执行此操作 您没有
  • 禁用右键单击嵌入元素内的 pdf

    我有一个embed我在其中提供路径的元素pdf文件 我想阻止它被下载 但是当我右键单击该 t 时 我会看到保存和打印 pdf 的选项 我想阻止这些选项 I tried 但它禁用除 PDF 之外的整个页面上的右键单击 一种不受 CORS 或
  • 使用 JavaScript 填写 PDF 表单

    这就是我所拥有的 用户填写很长的 html 表单 用户获取下载不同 pdf 的链接 这是可填写的表格 链接是使用 javascript 生成的 用户单击链接 生成 url 使用用户之前提交的数据 在表单中处理数据并完成字段 这是在表单内使用
  • 以编程方式更改 PDF 文件中黑框的颜色?

    我有一个由 Microsoft Word 生成的 PDF 文件 用户指定了黑色的 突出显示 颜色 使文本看起来像一个黑框 并使文本看起来像是经过编辑的 我想将黑框更改为黄色 以便突出显示文本 理想情况下 我想用 Python 来完成此操作
  • 强制 Excel 将多张纸作为单个作业打印

    在某些 Excel 2003 工作簿中 当我尝试print如果有多个工作表 Excel 将这些工作表视为单独的打印作业 这让我一直在编写的 Excel 自动化应用程序感到困惑 因为它会导致 Adob e PDF Printer 停止并询问用
  • 使用 utf-8 文件名发送 MIME 编码的电子邮件附件

    你好亲爱的人们 我花了三天时间在网上搜索答案 但没有找到任何答案 我发现了很多 几乎 的案例 但没有一个正是我正在寻找的 我能够获取希伯来语的主题和正文消息 但无法获取希伯来语的附加文件名 顺便说一句 我对 PHPMailer 等第三方程序
  • 使用 AJAX 调用生成 PDF 文件

    我正在尝试使用 Rails3 中的 AJAX 调用生成 PDF 文件 以下代码生成一个我使用 PRAWN gem 创建的 PDF 文件 我不希望用户在订购之前查看 PDF 因此 目标是在服务器中创建 PDF 文件 非常感谢任何想法或想法 使
  • 在 Visual Basic 2010 的控件中显示 PDF

    我刚刚安装了 Visual Basic 2010 浏览了一些有关如何显示文件的教程 但找不到任何有关如何选择现有 PDF 文件并将其嵌入表单的材料 任何正确方向的建议或指示都会很棒 谢谢 只需在表单中嵌入浏览器控件并将其导航到 PDF 文件
  • R 在设置宽度和高度的 PDF 中缩放绘图元素

    尽管发送到 PDF 的 R 图可以在插图或页面布局软件中随意重新缩放 但科学期刊通常坚持提供的图具有特定的尺寸 是否可以直接在 R 中在给定 PDF 大小内缩放所有绘图元素的大小 require ggplot2 p lt qplot dat
  • 从 .docx 转换为 pdf 时,图像显示效果不佳

    我转换了 docx文件至 pdf文件中 文本转换得很好 但是图像 docx文件没有出现 而是表示为一些特殊字符 下面是我的代码 import com lowagie text Document import com lowagie text
  • 大虾如何生成目录?

    有没有一种简单的方法来生成带有相应页面链接的目录 在最近版本的虾中 是的 查看 API 示例的 Examples general outlines rb 示例 See http prawnpdf org manual pdf http pr
  • 从输出流合并 PDF

    我有两个 PDF 文件 每个文件都在一个ByteArrayOutputStream 我想合并两个 PDF 并且想使用 iText 但我不明白如何制作它 因为它只使用 InputStream 谁能帮我 The ByteArrayOutputS
  • 如何从文本视图制作多页 PDF?

    我从 iPhone 应用程序生成了一个 PDF 文件 虽然大多数文档只有一页 但我希望能够检测文本是否超出 边距 如果是 则将其添加到下一页 我对此很陌生 所以不太确定如何做到这一点 下面是代码 有什么建议么 void drawBorder
  • 是否可以使用“pandoc”将 .tex 文件编译为 PDF?

    是否可以使用 pandoc 编译 tex 文件 我目前正在使用 MacVim 在 MultiMarkdown 中记课堂笔记 这样 当我回到家时 我就可以mmd2tex并使用 TexShop 将 tex 文件编译为 PDF 它效果很好 但这个
  • 检测文本字段溢出

    假设我有一个 PDF 文档 其中的文本字段定义了某种字体和大小 有没有办法确定某些文本是否适合字段矩形内PDFBox 我试图避免文本未完全显示在字段内的情况 因此 如果给定字体和大小的文本溢出 我想将字体大小更改为Auto 0 此代码重新创

随机推荐

  • 深入了解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 右下角的电子公章不仅包含图形公章还包含了