`
yuankai
  • 浏览: 107148 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Itext实现pdf文件Encryption

阅读更多
要实现证书加密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操作Pdf简单整理

    在使用iText时,首先需要引入相应的库文件,如压缩包中的`itextpdf-5.5.1.jar`,这是iText的主要库,包含了处理PDF文档的核心功能。如果需要处理中文字符或者亚洲语言,还需要引入`itext-asian-5.1.0.jar.zip`解压后...

    java用iText产生Pdf文件源码

    这个库提供了丰富的API,使得开发者能够方便地在程序中生成高质量的PDF文件。以下是一些关于如何使用iText在Java中生成PDF文件的关键知识点: 1. **安装与引入iText库** 在开始之前,你需要先在项目中引入iText库...

    itextpdf签章示例

    这里我们将深入探讨如何使用iTextPDF库在Java环境中实现PDF签章的功能。 iTextPDF是一个强大的开源Java库,专门用于创建、编辑和操作PDF文档。在5.5.0版本中,iTextPDF提供了丰富的API,支持包括签章在内的各种高级...

    Itext生成PDF文件加密与加水印

    bcprov-jdk15-139.jar 加密时用到。 iText-2.1.2u.jar Itext包。 iTextAsian.jar 在导入中文是要用到。 博文链接:https://pirateyk.iteye.com/blog/196100

    java实现pdf文件的电子签字+盖章+防伪二维码+水印+PDF文件加密

    然而,为了确保PDF文件的安全性和完整性,有时我们需要对PDF进行电子签字、盖章、添加防伪二维码、水印以及加密。在Java环境下,我们可以利用特定的库来实现这些功能,例如iText库。以下是对这些知识点的详细解释: ...

    JAVA生成PDF文件(Demo+jar),可加密及设置安全性

    在IT行业中,生成PDF文件是常见的需求,尤其是在报表、文档生成和数据导出等场景。Java作为一种广泛应用的编程语言,提供了多种库来帮助开发者完成这项任务。本项目着重介绍了如何在Java环境中生成PDF文件,并且对其...

    itext中文文档,生成PDF供前台打印及下载

    使用iText可以创建包含文本、图片、表格等各种元素的PDF文件。iText支持PDF标准的多个版本,并提供了丰富的API来实现复杂的PDF操作。 ### iText文档的创建和操作 在iText中,首先需要创建一个`Document`对象来表示...

    pdf生成之itext使用

    综上所述,iText 不仅能够高效地生成 PDF 文件,还提供了丰富的功能来定制文档的内容和外观,极大地提高了开发者的工作效率。无论是简单的报告还是复杂的出版物,iText 都是一个值得信赖的选择。

    ITEXT 用于生产PDF报表

    8. **安全性**:通过`PdfWriter`的`setEncryption`方法,ITEXT可以对生成的PDF进行加密,保护文档内容不被未经授权的用户访问。 9. **源码与文档**:压缩包中的`-sources.jar`和`-javadoc.jar`文件分别提供了ITEXT...

    android pdf文件加密

    本文将深入探讨如何在Android 2.2及更高版本中实现PDF文件的加密。 首先,我们需要了解PDF加密的基本原理。PDF文件的加密通常基于标准的加密算法,如40位或128位的RC4或AES。加密的主要目的是限制未经授权的访问、...

    itext 中文帮助手册

    `iText` 提供了丰富的 API,使得开发者能够轻松地在 Java 应用程序中生成、修改和解析 PDF 文件。本篇内容将详细介绍 `iText` 在处理中文字符时的关键知识点,并结合实际应用场景进行深入探讨。 ### 1. iText 中文...

    iText中文API帮助文档.zip

    这份参考文档可能会详细介绍PDF文件的结构、对象模型、编码方式、渲染规则等内容,这对于深入理解PDF文档的工作原理及其与iText库的交互至关重要。 在使用iText时,开发者首先需要了解PDF的基本概念,如页面、资源...

    iText入门基础教程

    2. **修改 PDF**:iText 支持对现有 PDF 文件进行编辑,比如添加或删除页面、插入文本和图像。 3. **文本处理**:可以设置字体、大小、样式,以及处理复杂的文本布局。 4. **表格操作**:创建和填充表格,调整列宽和...

    itextpdf-5.5.5.jar

    本文将深入探讨iTextPDF 5.5.5版本,一个强大的PDF操作工具包,帮助你了解如何利用其核心功能生成简单的PDF文件。 iTextPDF是由iText公司开发的一个开源Java库,专门用于创建和修改PDF文档。iTextPDF 5.5.5是其稳定...

    PDF文件中加水印、文字

    首先,要实现PDF文件中的水印和文字添加,通常需要借助第三方库,如`iTextSharp`。`iTextSharp`是一个用C#编写的开源库,它允许开发人员创建、修改和处理PDF文档。使用`iTextSharp`,你可以轻松地在每一页或者特定...

    itext-5.3.2.jar

    `itextpdf-5.3.2.jar`是主库文件,包含了iText的主要功能;`itext-xtra-5.3.2.jar`扩展了iText的功能,如XML处理和图像支持;`itext-pdfa-5.3.2.jar`专门针对PDF/A标准,确保生成的PDF文件符合档案保存的要求。另外...

    itext简单demo

    它提供了丰富的API,使得开发者能够方便地生成、修改和操作PDF文件。这个“itext简单demo”示例,显然是一个基于iText 5.4版本的实践项目,用于演示如何在实际开发中使用该库。 **iText 5.4 特性** 1. **文本和...

    JAVA导出PDF Itext 中文文档

    这篇博客文章“JAVA导出PDF Itext 中文文档”可能详细介绍了如何利用Itext库在Java中生成包含中文字符的PDF文件。Itext库支持多种语言,包括中文,使得开发者能够方便地创建多语言的PDF文档。 首先,生成PDF时,...

    PDF文件加密

    PDF文件的加密方法主要包括标准的40位和128位RC4加密,以及更安全的AES(Advanced Encryption Standard)加密。40位RC4算法相对较弱,容易被破解,而128位RC4和AES提供更高的安全性。AES支持128位和256位的密钥长度...

Global site tag (gtag.js) - Google Analytics