Как визуализировать защищенный паролем PDF

Я использую Flying Saucer для создания PDF из XHTML. Рендеринг работает хорошо, но любая попытка защитить документ PDF паролем завершается с ошибкой.

Я использую код, рекомендованный Аджитом Соманом в https://stackoverflow.com/a/46024498/4517737. Копия кода показана ниже. Если вы раскомментируете закомментированную строку, в строке "renderer.createPDF(os, false)" будет выдано исключение.

Исключением является "Исключение в потоке "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException" (для приложения JavaFX).

Для обычной Java Исключением является "Исключение в потоке "main" java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Encodable at com.itextpdf.text.pdf.PdfEncryption.(PdfEncryption.java:147).. ... Вызвано: java.lang.ClassNotFoundException:org.bouncycastle.asn1.ASN1Encodable"

final File outputFile = File.createTempFile(fileName, ".pdf");
FileOutputStream os = new FileOutputStream(outputFile);
PDFEncryption pdfEncryption  = new PDFEncryption();
String password= "password@123";
pdfEncryption.setUserPassword(password.getBytes());
ITextRenderer renderer = new ITextRenderer();

// the following line causes Exception
// renderer.setPDFEncryption(pdfEncryption);

renderer.setDocumentFromString(htmlContent);
renderer.layout();
renderer.createPDF(os, false);
renderer.finishPDF();

Пожалуйста помоги.


person Josef Kokes    schedule 06.05.2019    source источник
comment
Какое исключение выбрасывается?   -  person obourgain    schedule 07.05.2019
comment
Спасибо за вашу идею; Я добавил эту информацию в свой вопрос. У меня также есть полная трассировка стека (97 строк), но я не знаю, как ее обрезать.   -  person Josef Kokes    schedule 07.05.2019