当前位置: 首页 > 面试题库 >

如何使pdf文件受密码保护?

施振海
2023-03-14
问题内容

我想使pdf文件受密码保护。我只是对它进行了搜索,并在下面找到了一个好的解决方案。它工作正常,但是使用下面给定的代码保护pdf后,它会清除pdf中已经存在的所有数据。

此代码使用的jar文件是:

itextpdf-5.2.1.jar

bcmail-jdk16-1.46.jar

bcprov-jdk16-1.46.jar

bctsp-jdk16-1.46.jar

保护PDF的代码:

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Secure_file {
    private static String USER_PASSWORD = "password";
    private static String OWNER_PASSWORD = "secured";
    public static void main(String[] args) throws IOException {
        Document document = new Document();
        try {
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("E:\\sample.pdf"));
            writer.setEncryption(USER_PASSWORD.getBytes(),OWNER_PASSWORD.getBytes(), PdfWriter.ALLOW_PRINTING,PdfWriter.ENCRYPTION_AES_128);
            document.open();
            document.add(new Paragraph("This is Password Protected PDF document."));
            document.close();
            writer.close();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

我需要在此程序中进行哪些更改?


问题答案:

如果在“操作”关键字中查找iText,则会发现指向示例part3.chapter12的加密。EncryptionPdf。该示例的方法从createPdf本质上讲等同于您的代码,但是该方法encryptPdf是您想要的:

/** User password. */
public static byte[] USER = "Hello".getBytes();
/** Owner password. */
public static byte[] OWNER = "World".getBytes();

...

public void encryptPdf(String src, String dest) throws IOException, DocumentException {
    PdfReader reader = new PdfReader(src);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
    stamper.setEncryption(USER, OWNER,
        PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA);
    stamper.close();
    reader.close();
}


 类似资料:
  • 问题内容: 我正在尝试使用iText的PdfReader来检查给定的PDF文件是否受密码保护,但是却遇到此异常: 线程“主线程”中的异常java.lang.NoClassDefFoundError:org / bouncycastle / asn1 / ASN1OctetString 但是,当针对非密码保护的文件测试相同的代码时,它运行良好。这是完整的代码: 问题答案: 从此处使用Apache P

  • 问题内容: 我有一个受密码保护的Excel电子表格。我需要打开此电子表格并从中读取数据。我一直在尝试使用POI API无济于事。首选Java解决方案,但任何想法都会有所帮助。 编辑:是的,我有密码。该文件在excel中受密码保护;必须输入密码才能查看电子表格。 Edit2:我无法使用带有密码的POI打开它,我在寻找替代解决方案。 问题答案: 您可以使用JExcelApi。 自从我这样做已经有一段时

  • 我一直在尝试使用fpdf和fpdi向受密码保护的pdf(仅写保护)添加水印。 它在普通PDF上工作,但当它受密码保护时,会出现以下错误: FPDF错误:此文档(upd/509ae4da4044df9a43e03e09b4cf772b0.pdf)可能使用了FPDI附带的免费解析器不支持的压缩技术。 在文档上写是不可能的,这是有道理的,但是在搜索时,我看到类似的问题得到了解决。 感谢先进。

  • 问题内容: 我正在尝试在excel中打开一个受密码保护的文件,而无需任何用户交互。我在线搜索,发现此代码使用win32com.client运行此程序时,仍然提示输入密码… 问题答案: 我认为命名参数在这种情况下不起作用。因此,您必须执行以下操作: 有关Workbooks.Open方法的详细信息,请参见http://msdn.microsoft.com/zh- cn/library/office/f

  • 问题内容: 我已经使用Java创建了zip文件,如下所示 现在,我想在单击zip文件时提示我输入密码,然后解压缩zip文件。请任何帮助,我应该怎么走? 问题答案: 尝试以下基于以下代码Zip4j: 来自。 用法示例:

  • 在我正在处理的一个java项目中,我需要提取一个受密码保护的.rar文件。我知道密码。有没有人知道一个免费的API可以这样做?