关于Itext 报错-java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Encodable

本文解决使用iText在Java中为PDF文档加水印时遇到的NoClassDefFoundError异常及BadPasswordException错误。通过引入bcprov-jdk15on-1.57.jar并设置reader.unethicalreading=true,有效解决了加密PDF文件的读取问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  如果我们在用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; // 新加这段代码, 就能将密码报错问题解决

 

转载于:https://www.cnblogs.com/Mr-Kenson/p/9810044.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值