如何呈现受密码保护的PDF

时间:2019-05-06 18:25:16

标签: pdf-generation password-protection flying-saucer

我正在使用飞碟从XHTML生成PDF。呈现效果很好,但是任何用密码保护PDF文档的尝试均会失败,并显示Exception。

我正在使用https://stackoverflow.com/a/46024498/4517737中Ajit Soman建议的代码。代码副本如下所示。 如果取消注释注释行,则在“ renderer.createPDF(os,false)”行中引发异常。

例外是 “线程 Exception” java.lang.RuntimeException:java.lang.reflect.InvocationTargetException ” (对于JavaFX应用程序)。

对于纯Java,异常为“ 线程“主”中的异常” java.lang.NoClassDefFoundError:org / bouncycastle / asn1 / ASN1Encodable     在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();

请帮助。

0 个答案:

没有答案