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