1

我正在使用以下代码对 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 {
    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();
    }
}

它从哪里读取 PDF src,然后将 PDF 写入dest受密码保护的位置。

现在,虽然对于几乎所有的 PDF 文件,上面的代码都在工作。但是,有一种类型的 PDF 文件失败了。

此 PDF 文件与其他文件有何不同?

  1. 它的尺寸比其他的要大。即 110 Kb 而其他是 2 kb(我想这应该不是问题)。
  2. 此 PDF 文件经过数字签名,我认为这可能是导致问题的原因。

因此,我想知道我可能做错了什么,或者是否有另一种密码保护各种 PDF 的方法。任何帮助表示赞赏。

4

1 回答 1

0

也许,您可以删除此行并重试

| PdfWriter.DO_NOT_ENCRYPT_METADATA
于 2020-04-09T12:07:55.927 回答