关于Itext 报错-java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Encodable
如果我们在用 iText 做为 java 为 PDF 文档加水印的时候 报如下异常
java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Encodable com.itextpdf.text.pdf.PdfEncryption.<init>(PdfEncryption.java:147) com.itextpdf.text.pdf.PdfReader.readDecryptedDocObj(PdfReader.java:779) com.itextpdf.text.pdf.PdfReader.readDocObj(PdfReader.java:1156) com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:511) com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:170) com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:159) com.fh.util.SetWarter.setWatermark(SetWarter.java:62) com.fh.util.SetWarter.setpdfWater(SetWarter.java:37) com.fh.controller.Relatedlaw.relatedlaw.RelatedLawController.save(RelatedLawController.java:231)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
或 一下异常:
com.itextpdf.text.exceptions.BadPasswordException:: PdfReader not opened with owner password (未设置加密密码) 或是 com.itextpdf.text.exceptions.BadPasswordException: PdfReader not opened with owner passwor (设置正确加密密码后)
解决方法:
首先下载一个 jar 包: bcprov-jdk15on-1.57.jar
将包导入项目中之后, 可能会出现以下异常:
com.itextpdf.text.exceptions.BadPasswordException:: PdfReader not opened with owner password (未设置加密密码)
或是
com.itextpdf.text.exceptions.BadPasswordException: PdfReader not opened with owner passwor (设置正确加密密码后)
那 我们的解决方法是 :
PdfReader reader = new PdfReader(input); reader.unethicalreading = true; // 新加这段代码, 就能将密码报错问题解决