首页 > 编程语言 >针对PDF文档:印章、数字签名、编辑保护、PDF/A的Java工具类

针对PDF文档:印章、数字签名、编辑保护、PDF/A的Java工具类

时间:2024-06-11 14:03:16浏览次数:12  
标签:origin alexgaoyh Java 数字签名 PDFUtil pap output PDF pdf

背景

  本文是基于Java语言,引入POI从而提供将富文本编辑器内的html内容转换为docx的方式。

代码

  引入pom坐标

    <dependency>
        <groupId>cn.net.pap</groupId>
        <artifactId>pap4j-common-pdf</artifactId>
        <version>0.0.1</version>
    </dependency>

  测试方法


    @Test
    public void pdfTest() {
        try {
            // 添加印章: 原始pdf、印章图像、输出pdf
            PDFUtil.addStamp("origin.pdf", "alexgaoyh.png", "output.pdf");

            // 添加禁止编辑(密码): 原始pdf、ownerPassword、userPassword、输出pdf
            PDFUtil.addProtect("origin.pdf", "alexgaoyh", "pap.net", "output.pdf");

            // 添加数字签名: 原始pdf、*.p12文件、*.p12文件对应密码、输出pdf
            PDFUtil.addSign("origin.pdf", "alexgaoyh.p12", "alexgaoyh", "output.pdf");

            // 转换PDF/A标准: 原始pdf,输出pdf
            PDFUtil.convertPDFA("origin.pdf", "output.pdf");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

总结

  本方法依赖 pdfbox 3.0.2版本,并且引入bcprov-jdk15on、bcpkix-jdk15on处理数字签名中的证书部分。

参考

  1. http://pap-docs.pap.net.cn/
  2. https://gitee.com/alexgaoyh/pap4j-boot3/

标签:origin,alexgaoyh,Java,数字签名,PDFUtil,pap,output,PDF,pdf
From: https://blog.csdn.net/alexgaoyihang/article/details/139597292

相关文章

  • Java 开发面试题精选:Mysql 一篇全搞定
    前言在高级Java开发工程师的面试中,MySQL作为常见的数据库技术,其掌握程度往往是评估候选人综合能力的重要组成部分。在这篇文章中,我精选了一些最可能被问到的与MySQL相关的面试题目,这些题目可以全面考察候选人的理论知识、实战经验和问题解决能力,不管你是准备求职的小伙伴,还是......
  • JavaScript基础语法
    原文链接:https://blog.csdn.net/m0_67683346/article/details/1275910796.2、console.log在控制台打印一个日志(一般是给程序员看的):console.log("helloJavaScript");需要在开发者工具中的控制台查看打印结果:  ★console是JS中的一个“对象”,.表示取对象中的某个属性或......
  • Java与机器学习:从零开始的入门指南
    引言随着人工智能和大数据的迅猛发展,机器学习已经成为现代技术的核心之一。虽然Python在机器学习领域占据主导地位,但Java凭借其稳定性、跨平台性和丰富的生态系统,依然是许多企业级应用的首选语言。在本系列文章中,我们将深入探讨如何使用Java进行机器学习,从基础概念到实际应......
  • 【JavaScript】内置对象 - 字符串对象 ⑦ ( String 字符串替换 | replace 函数 | repl
    文章目录一、String字符串替换1、replace函数替换字符串2、使用replace函数替换所有匹配字符串3、replaceAll函数替换字符串二、String字符串转数组1、split函数切割字符串2、代码示例-切割字符串String字符串对象参考文档:https://developer.mozilla.......
  • JavaScriptSerializer 类
    原文链接:https://learn.microsoft.com/zh-cn/dotnet/api/system.web.script.serialization.javascriptserializer?view=netframework-4.8.1&redirectedfrom=MSDN命名空间:System.Web.Script.Serialization程序集:System.Web.Extensions.dll 对于.NETFramework4.7.2及更高......
  • Tdengine的时序数据库简介、单机部署、操作语句及java应用
    Tdengine的时序数据库简介、单机部署、操作语句及java应用   本文介绍了Tdengine的功能特点、应用场景、超级表和子表等概念,讲述了Tdengine2.6.0.34的单机部署,并介绍了taos数据库的常见使用方法及特色窗口查询方法,最后介绍了在java中的应用。一、tdengine简要介绍及应......
  • AAAjavaweb复习
     packagecom.xxxx.servlet;importjakarta.servlet.*;importjakarta.servlet.http.*;importjakarta.servlet.annotation.*;importjava.io.IOException;/*创建Servlet类*/@WebServlet(name="TestServlet01",value="/TestServlet01")publi......
  • AAAjavaweb复习-个人代码复习
    1:packagecom.xxxx.servlet;importjakarta.servlet.;importjakarta.servlet.http.;importjakarta.servlet.annotation.*;importjava.io.IOException;/创建Servlet类/@WebServlet(name="TestServlet01",value="/TestServlet01")publicclas......
  • Java (MyBatis-Plus 项目)
    前沿MyBatis-Plus在使用这个时候的它通过提供简洁、强大的API和注解支持,简化了常见的数据库操作。以下是关于MyBatis-Plus中注解的解释和示例,理解和使用1.实体类注解@TableName:用于指定数据库表的名称。@TableId:用于指定主键字段。@TableField:用于指定非主键字段......
  • Java实现定时任务的几种方式 ---------内附源码
      在我们日常项目开发过程中,经常用到定时任务,如果使用不当甚至会造成资源损毁,定时任务使用不当,会导致发出大量重复操作,可能会造成巨大的后果。  所以,系统的学习一下定时任务,是非常有必要的。这篇文章就带大家整体梳理学习一下Java领域中常见的几种定时任务实现。 ......