Использование PDF Stamper для защиты паролем PDF-файлов с цифровой подписью - PullRequest
0 голосов
/ 06 апреля 2020

Я использую следующий код для защиты паролем 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 КБ, в то время как другие занимают 2 КБ (что, я полагаю, не должно вызывать проблем).
  2. Этот файл PDF с цифровой подписью , что, как мне кажется, может вызвать проблему.

Следовательно, я хотел бы знать, что я могу делать неправильно или есть альтернативный способ защиты паролем всех видов PDF. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 09 апреля 2020

Возможно, вы можете удалить эту строку и повторить попытку

| PdfWriter.DO_NOT_ENCRYPT_METADATA
...