新闻资讯 | 控件产品 | 技术文章 | 购物车 | 合作伙伴 | 问题解答 | 电子简报 | PDF论坛 | 资源下载
您现在的位置:技术文章>PDF开发篇 首页|PDF应用篇|PDF开发篇|解决方案

Itext实现pdf文件Encryption

发布日期:2012-7-12 作者:yangtao6888 出处:csdn

原文地址:http://blog.csdn.net/yangtao6888/article/details/7733029

要实现证书加密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);
}
}
  • Itext.rar (2.8 MB)
  • 描述: 包含了一个test certificate和要用到的jar包。
  • 下载次数: 215
发布人:管理员 【报告错误】·【推荐好友】·【打印文章】
相关评论 本文现有 0 条评论 评分人数: 0 平均分: 0
相关评论
用户名: 密  码:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
注意:请不要在评论中含与内容无关的广告链接,违者封ID
文章搜索
推荐文章
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
热门点击
一个简单的PDF文件结构的分析(22751)
PHP的FDF文档支持(16273)
用C#制作PDF文件全攻略(13703)
Word转换PDF格式的C#或(12213)
ITextRenderer学习(11748)
pdfMaker文章:PDF加(11696)
PDF文件加密仿真(11114)
怎样用iReport制作Web(10483)
iText PDF概述(1)(10077)
从pdf文档中提取出文本(10015)
热门评论
从pdf文档中提取出文本(8)
PDFlib开发:创建超文本元(2)
客户端自动打印PDF(Prin(2)
浅谈PDFlib中文输出(一)(2)
xml的转换之pdf 2 ((1)
xml的转换之pdf 1 (x(1)
PDF知识讲座(1)(1)
PDFBox使用简介(1)
使用正则表达式计算PDF文档的(1)
word转pdf(1)