Java 操作PPT数字签名(一):添加、检测、删除签名
本文简要概述如何通过Java程序来处理PPT中的数字签名,文章主要分三个部分来介绍,即数字签名的添加、验证以及删除。
基本操作思路:
1. 添加签名:【加载PPT文档】→【添加签名】→【保存文档】
2. 检测签名:【加载PPT文档】→【判定是否签名】→【输出判定结果】
3. 删除签名:【加载PPT文档】→【判定是否签名】→【删除签名】→【保存文档】
Jar包引入:使用Spire.Presentation.jar 4.3.2版本,这里引入的是试用版的jar,程序中使用了临时授权文件,所以在结果文档中没有水印信息(经过测试,该功能在免费版中暂不支持,所以采用试用版)。Jar文件引入,可下载jar包,解压,手动将lib文件夹下的jar文件引入程序;或通过Maven仓库路径来引入(需配置pom.xml文件)。
Java代码操作如下
1.添加签名
import com.spire.presentation.*;
import java.util.Date; public class AddSignature {
public static void main(String[] args)throws Exception {
//加载PPT文档
Presentation ppt = new Presentation();
ppt.loadFromFile("test.pptx"); //添加数字签名
ppt.addDigitalSignature("cer.pfx", "123654yes!","The Author is Mia", new Date()); //保存文档
ppt.saveToFile("AddSignature.pptx",FileFormat.PPTX_2013);
ppt.dispose();
}
}

2. 判断文档是否签名
import com.spire.presentation.*;
public class VerifySignature {
public static void main(String[] args) throws Exception{
//加载用于测试的PPT文档
Presentation ppt = new Presentation();
ppt.loadFromFile("AddSignature.pptx");//已签名文档
//ppt.loadFromFile("test.pptx");//未签名文档
//判定文档是否签名
boolean digitalSigned = ppt.isDigitallySigned();
if (digitalSigned == true)
{
System.out.println("已签名!");
}
else if(digitalSigned == false)
{
System.out.println("未签名,可添加签名。");
}
}
}
使用已签名文件测试时,得出如下判定结果:

使用未签名文档测试时,得出如下验证结果:

通过以上方法,可确认该方法有效。
3.删除签名
import com.spire.presentation.*;
public class RemoveSignature {
public static void main(String[] args) throws Exception {
//加载PPT文档
Presentation ppt = new Presentation();
ppt.loadFromFile("AddSignature.pptx"); //判定文档是否签名
boolean digitalSigned = ppt.isDigitallySigned();
if (digitalSigned == true)
{
ppt.removeAllDigitalSignatures();//移除签名
} //保存文档
ppt.saveToFile("RemoveSignature.pptx",FileFormat.PPTX_2013);
ppt.dispose();
}
}
运行程序后,最后保存的文件不再有数字签名。
综上内容,通过该jar来处理PPT中的签名可实现相关功能,代码比较简洁,操作逻辑易理解。
Java 操作PPT数字签名(一):添加、检测、删除签名的更多相关文章
- java操作elasticsearch实现批量添加数据(bulk)
java操作elasticsearch实现批量添加主要使用了bulk 代码如下: //bulk批量操作(批量添加) @Test public void test7() throws IOExcepti ...
- java使用jdbc对sqlite 添加、删除、修改的操作
package com.jb.jubmis.Dao.DaoImpl; import java.io.File;import java.io.FileInputStream;import java.io ...
- java操作MySQL数据库(插入、删除、修改、查询、获取所有行数)
插播一段广告哈:我之前共享了两个自己写的小应用,见这篇博客百度地图开发的两个应用源码共享(Android版),没 想到有人找我来做毕设了,年前交付,时间不是很紧,大概了解了下就接下了,主要用到的就是和 ...
- coding++:java操作 FastDFS(上传 | 下载 | 删除)
开发工具 IDEAL2017 Springboot 1.5.21.RELEASE --------------------------------------------------------- ...
- JQuery实现对html结点的操作(创建,添加,删除)
效果图: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...
- JS DOM元素的操作(创建,添加,删除,和修改属性)
1.1 创建 DOM 元素以及相应的追加方式 1.1.1 创建:document.createElement('div'); 添加: fatherEle.appendChild(ele); appe ...
- Java 添加数字签名到Excel以及检测、删除签名
Excel中可添加数字签名以供文档所有者申明文档的所有权或有效性.文本以Java代码示例介绍如何在Excel文档中对数字签名功能进行相关操作,包括如何添加签名到Excel.检测Excel文档是否已签名 ...
- Java读取json文件并对json数据进行读取、添加、删除与修改操作
转载:http://blog.csdn.net/qing_yun/article/details/46865863#t0 1.介绍 开发过程中经常会遇到json数据的处理,而单独对json数据进行 ...
- Java 操作Word书签(一):添加、删除、读取书签
Word中,书签功能常用于查找.定位.标记特定字符或段落,对于篇幅较大的文档,此功能非常实用.下面,将介绍通过Java程序来添加及删除Word书签的方法.示例要点包括: 1. 添加书签 1.1 给指定 ...
随机推荐
- SpringBoot 全局视角看springboot
从单体架构到微服务 单体架构 任何一个网站在发布初期几乎都不可能立马就拥有庞大的用户流量和海量数据,都是在不停 的试错过程中一步一步演变其自身架构,满足其自身业务.比如现在能够抗住双十一这么大 流量的 ...
- 【哈希表】leetcode454——四数相加II
编号454:四数相加II 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0. 为 ...
- Git常用命令速查表 & Git Basics & github : release 发布!
Git常用命令速查表 & Git Basics & github : release 发布! Git常用命令速查表: 1 1 1 1 1 http://git-scm.com/bo ...
- Node.js Learning Paths
Node.js Learning Paths Node.js in Action Node.js Expert situations / scenario Restful API OAuth 2.0 ...
- taro best practice
taro best practice 最佳实践 https://taro-docs.jd.com/taro/docs/best-practice.html#关于-jsx-支持程度补充说明 https: ...
- CURTIS SAVANAH:数字经济=智能基础设施+海量数据+新生业态
前不久,Datahero Inc公司(公司编号:20141166945)创始人CURTIS SAVANAH在会议上表示,要构建数字经济的愿景,需要智能基础设施.海量数据和全新新生业态. 他在演讲中说到 ...
- 【.NET 与树莓派】控制舵机
不管是小马达,还是大马达,嗯,也就是电机,相信大伙伴们也不会陌生.四驱车是一种很优秀的玩具,从老周小时候就开始流行(动画片<四驱兄弟>估计很多大朋友都看过),直到现在还能看到很多卖四驱车的 ...
- django学习-27.admin管理后台里:对列表展示页面的数据展示进行相关优化
目录结构 1.前言 2.完整的操作步骤 2.1.第一步:查看ModelAdmin类和BaseModelAdmin类的源码 2.2.第二步:查看表animal对应的列表展示页面默认的数据展示 2.3.第 ...
- ClickHouse源码笔记3:函数调用的向量化实现
分享一下笔者研读ClickHouse源码时分析函数调用的实现,重点在于分析Clickhouse查询层实现的接口,以及Clickhouse是如何利用这些接口更好的实现向量化的.本文的源码分析基于Clic ...
- 一文读懂Servlet
1 Servlet简介 Servlet就是sun公司开发动态web的一门技术 Sun在这些API中提供一个接口叫做:Servlet. 开发一个Servlet程序,只需两步: 编写一个类,实现Servl ...