Troubleshooting

Troubleshooting

Документ не закрывается — утечка памяти

Document реализует AutoCloseable. Всегда используйте блок try-with-resources:

try (Document doc = new Document("input.pdf")) {
    // operations
} // doc.close() called automatically

OutOfMemoryError с большими файлами

Для больших документов включите дисковый буфер в 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.

Аннотация не видна

Если аннотация добавлена, но не отображается в просмотрщике, проверьте:

  1. Прямоугольник аннотации находится внутри MediaBox страницы
  2. page.getAnnotations().add(annotation) был вызван после настройки всех свойств
  3. Документ был сохранён после добавления аннотации

См. также:

 Русский