Я использую 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();
Пожалуйста помоги.