Troubleshooting
Документ не закрывается — утечка памяти
Document реализует AutoCloseable. Всегда используйте блок try-with-resources:
try (Document doc = new Document("input.pdf")) {
// operations
} // doc.close() called automaticallyOutOfMemoryError с большими файлами
Для больших документов включите дисковый буфер в PdfFileEditor:
PdfFileEditor editor = new PdfFileEditor();
editor.setUseDiskBuffer(true);
editor.concatenate(inputFiles, "output.pdf");PdfFileSecurity: Неверный пароль
decryptFile(password) возвращает false, если предоставленный пароль неверен. Всегда проверяйте возвращаемое значение и обрабатывайте случай ошибки:
try (PdfFileSecurity security = new PdfFileSecurity()) {
security.setInputFile("encrypted.pdf");
security.setOutputFile("decrypted.pdf");
boolean ok = security.decryptFile("ownerPassword");
if (!ok) {
System.err.println("Decryption failed — verify the owner password.");
}
}PdfFileEditor: Нулевые аргументы
PdfFileEditor.resizeContents() тихо игнорирует нулевые аргументы, вместо того чтобы бросать исключение. Если выходной документ кажется неизменным после resizeContents(), проверьте, что аргумент ContentsResizeParameters не равен null и что процентные значения в сумме дают ровно 100.
AESCipher: Неправильная длина ключа
AES требует ключи точно длиной 16, 24 или 32 байта (128, 192 или 256 бит). Передача ключа неправильной длины приводит к исключению от базового криптопровайдера Java.
Аннотация не видна
Если аннотация добавлена, но не отображается в просмотрщике, проверьте:
- Прямоугольник аннотации находится внутри
MediaBoxстраницы page.getAnnotations().add(annotation)был вызван после настройки всех свойств- Документ был сохранён после добавления аннотации