要实现证书加密pdf文件需要加入几个jar包,包括(iText-2.1.2u.jar,bcmail-jdk15-138.jar,bcprov-jdk16-139.jar,iTextAsian.jar等,看你自己的需要。注:本人用的jdk1.6,如果是用其他版本的jdk请去http://www.bouncycastle.org/latest_releases.html下载自己需要的包。),还有就是必须替换掉%JAVA_HOME%/jre/lib/securitylocal_policy.jar包。local_policy.jar,bcmail-jdk15-138.jar,bcprov-jdk16-139.jar在附件中可以下(为什么要换local_policy.jar具体也不是很清楚,好像是不使用sun公司提供的providers ,好像是sun提供加密限制了加密内容的length,这块不熟悉,如果有清楚的请不吝赐教。),iText-2.1.2u.jar,iTextAsian.jar这两个包可以在http://sourceforge.net/projects/itext/下载(附件中已有所有要用的包,还有一个测试证书).
注:必须是.cer的证书且支持加密。可以查看附件中的图片。
/**
* Itext证书加密
*
* @param originalFile
* pdf文件路径
* @param encryptedFile
* 加密后生成新的pdf文件路径
* @param certFile
* 证书路径
* @param password
* 证书密码
* @param ownerPassWord
* 所有者密码
*/
private static void certificateEncryption(String originalFile,
String encryptedFile, String certFile, String password,
String ownerPassWord) {
PdfReader reader = null;
InputStream is = null;
PdfStamper stamper = null;
try {
// 添加providers (在%JAVA_HOME%/jre/lib/security/java.security 中可以找到sun提供的providers )
Security.addProvider(new BouncyCastleProvider());
// 如果原始文件已经加密 那么就要求提供ownerPassWord
if (null == ownerPassWord || "".equals(ownerPassWord)) {
reader = new PdfReader(originalFile);
} else {
reader = new PdfReader(originalFile, ownerPassWord.getBytes());
}
stamper = new PdfStamper(reader,
new FileOutputStream(encryptedFile));
is = new FileInputStream(certFile);
// SubjectPublicKeyInfo(由 X.509 标准定义)public key
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate cert = cf.generateCertificate(is);
Certificate[] certs = new Certificate[1];
certs[0] = cert;
int[] permissions = new int[7];
permissions[0] = permissions[0] = PdfWriter.ALLOW_ASSEMBLY | PdfWriter.ALLOW_COPY | PdfWriter.ALLOW_DEGRADED_PRINTING | PdfWriter.ALLOW_FILL_IN
| PdfWriter.ALLOW_MODIFY_ANNOTATIONS | PdfWriter.ALLOW_MODIFY_CONTENTS | PdfWriter.ALLOW_PRINTING | PdfWriter.ALLOW_SCREENREADERS;
// pdf文档加密
stamper.setEncryption(certs, permissions,
PdfWriter.ENCRYPTION_AES_128);
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭流
PdfUtil.close(reader);
PdfUtil.close(is);
PdfUtil.close(stamper);
}
}
- 描述: 支持加密certificate。
- 大小: 654.1 KB
- Itext.rar (2.8 MB)
- 描述: 包含了一个test certificate和要用到的jar包。
- 下载次数: 319
- local_policy.jar (2.4 KB)
- 描述: 将这个jar包替换掉%JAVA_HOME%/jre/lib/security下的
local_policy.jar包(建议将原有的local_policy.jar备份)
- 下载次数: 222
分享到:
相关推荐
在使用iText时,首先需要引入相应的库文件,如压缩包中的`itextpdf-5.5.1.jar`,这是iText的主要库,包含了处理PDF文档的核心功能。如果需要处理中文字符或者亚洲语言,还需要引入`itext-asian-5.1.0.jar.zip`解压后...
这个库提供了丰富的API,使得开发者能够方便地在程序中生成高质量的PDF文件。以下是一些关于如何使用iText在Java中生成PDF文件的关键知识点: 1. **安装与引入iText库** 在开始之前,你需要先在项目中引入iText库...
这里我们将深入探讨如何使用iTextPDF库在Java环境中实现PDF签章的功能。 iTextPDF是一个强大的开源Java库,专门用于创建、编辑和操作PDF文档。在5.5.0版本中,iTextPDF提供了丰富的API,支持包括签章在内的各种高级...
bcprov-jdk15-139.jar 加密时用到。 iText-2.1.2u.jar Itext包。 iTextAsian.jar 在导入中文是要用到。 博文链接:https://pirateyk.iteye.com/blog/196100
然而,为了确保PDF文件的安全性和完整性,有时我们需要对PDF进行电子签字、盖章、添加防伪二维码、水印以及加密。在Java环境下,我们可以利用特定的库来实现这些功能,例如iText库。以下是对这些知识点的详细解释: ...
在IT行业中,生成PDF文件是常见的需求,尤其是在报表、文档生成和数据导出等场景。Java作为一种广泛应用的编程语言,提供了多种库来帮助开发者完成这项任务。本项目着重介绍了如何在Java环境中生成PDF文件,并且对其...
使用iText可以创建包含文本、图片、表格等各种元素的PDF文件。iText支持PDF标准的多个版本,并提供了丰富的API来实现复杂的PDF操作。 ### iText文档的创建和操作 在iText中,首先需要创建一个`Document`对象来表示...
综上所述,iText 不仅能够高效地生成 PDF 文件,还提供了丰富的功能来定制文档的内容和外观,极大地提高了开发者的工作效率。无论是简单的报告还是复杂的出版物,iText 都是一个值得信赖的选择。
8. **安全性**:通过`PdfWriter`的`setEncryption`方法,ITEXT可以对生成的PDF进行加密,保护文档内容不被未经授权的用户访问。 9. **源码与文档**:压缩包中的`-sources.jar`和`-javadoc.jar`文件分别提供了ITEXT...
本文将深入探讨如何在Android 2.2及更高版本中实现PDF文件的加密。 首先,我们需要了解PDF加密的基本原理。PDF文件的加密通常基于标准的加密算法,如40位或128位的RC4或AES。加密的主要目的是限制未经授权的访问、...
`iText` 提供了丰富的 API,使得开发者能够轻松地在 Java 应用程序中生成、修改和解析 PDF 文件。本篇内容将详细介绍 `iText` 在处理中文字符时的关键知识点,并结合实际应用场景进行深入探讨。 ### 1. iText 中文...
这份参考文档可能会详细介绍PDF文件的结构、对象模型、编码方式、渲染规则等内容,这对于深入理解PDF文档的工作原理及其与iText库的交互至关重要。 在使用iText时,开发者首先需要了解PDF的基本概念,如页面、资源...
2. **修改 PDF**:iText 支持对现有 PDF 文件进行编辑,比如添加或删除页面、插入文本和图像。 3. **文本处理**:可以设置字体、大小、样式,以及处理复杂的文本布局。 4. **表格操作**:创建和填充表格,调整列宽和...
本文将深入探讨iTextPDF 5.5.5版本,一个强大的PDF操作工具包,帮助你了解如何利用其核心功能生成简单的PDF文件。 iTextPDF是由iText公司开发的一个开源Java库,专门用于创建和修改PDF文档。iTextPDF 5.5.5是其稳定...
首先,要实现PDF文件中的水印和文字添加,通常需要借助第三方库,如`iTextSharp`。`iTextSharp`是一个用C#编写的开源库,它允许开发人员创建、修改和处理PDF文档。使用`iTextSharp`,你可以轻松地在每一页或者特定...
`itextpdf-5.3.2.jar`是主库文件,包含了iText的主要功能;`itext-xtra-5.3.2.jar`扩展了iText的功能,如XML处理和图像支持;`itext-pdfa-5.3.2.jar`专门针对PDF/A标准,确保生成的PDF文件符合档案保存的要求。另外...
它提供了丰富的API,使得开发者能够方便地生成、修改和操作PDF文件。这个“itext简单demo”示例,显然是一个基于iText 5.4版本的实践项目,用于演示如何在实际开发中使用该库。 **iText 5.4 特性** 1. **文本和...
这篇博客文章“JAVA导出PDF Itext 中文文档”可能详细介绍了如何利用Itext库在Java中生成包含中文字符的PDF文件。Itext库支持多种语言,包括中文,使得开发者能够方便地创建多语言的PDF文档。 首先,生成PDF时,...
PDF文件的加密方法主要包括标准的40位和128位RC4加密,以及更安全的AES(Advanced Encryption Standard)加密。40位RC4算法相对较弱,容易被破解,而128位RC4和AES提供更高的安全性。AES支持128位和256位的密钥长度...