Troubleshooting
Dokument nie zamyka się — wyciek pamięci
Document implements AutoCloseable. Zawsze używaj bloku try-with-resources:
try (Document doc = new Document("input.pdf")) {
// operations
} // doc.close() called automaticallyOutOfMemoryError przy dużych plikach
Dla dużych dokumentów włącz buforowanie na dysku w PdfFileEditor:
PdfFileEditor editor = new PdfFileEditor();
editor.setUseDiskBuffer(true);
editor.concatenate(inputFiles, "output.pdf");PdfFileSecurity: Nieprawidłowe hasło
decryptFile(password) zwraca false, jeśli podane hasło jest nieprawidłowe. Zawsze sprawdzaj wartość zwracaną i obsługuj przypadek niepowodzenia:
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: Argumenty null
PdfFileEditor.resizeContents() cicho ignoruje argumenty null zamiast rzucać wyjątek. Jeśli dokument wyjściowy wydaje się niezmieniony po resizeContents(), sprawdź, czy argument ContentsResizeParameters nie jest null oraz czy wartości procentowe sumują się dokładnie do 100.
AESCipher: Nieprawidłowa długość klucza
AES wymaga kluczy dokładnie 16, 24 lub 32 bajtów (128, 192 lub 256 bitów). Przekazanie klucza o nieprawidłowej długości powoduje wyjątek z warstwy Java dostawcy kryptograficznego.
Adnotacja niewidoczna
Jeśli adnotacja została dodana, ale nie pojawia się w przeglądarce, sprawdź:
- Prostokąt adnotacji znajduje się w obrębie
MediaBoxstrony page.getAnnotations().add(annotation)zostało wywołane po skonfigurowaniu wszystkich właściwości- Dokument został zapisany po dodaniu adnotacji