使用PDF Stamper对具有数字签名的PDF进行密码保护

问题描述 投票:0回答: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();
    }
}

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

现在,对于几乎所有的PDF文件,上述代码都有效。但是,此类型的PDF文件失败了。

此PDF文件与其他有什么不同?

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

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

java pdf itext pdfstamper
1个回答
0
投票

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

| PdfWriter.DO_NOT_ENCRYPT_METADATA
© www.soinside.com 2019 - 2024. All rights reserved.