直接调用PdfReader reader = new PdfReader(filename);会报错
正常不会,可能PDF被其他程序占用
谢谢你的答复。我已经解决问题了。我使用的itext版本为最新的5.5.8,需要引入bcprov-ext-jdk15on-154.jar才能识别中文pdf。
【问题现象】
我使用的itext版本为最新的5.5.8,直接调用PdfReader reader = new PdfReader(filename);来解析中文pdf提示以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1OctetString
at com.itextpdf.text.pdf.PdfEncryption.<init>(PdfEncryption.java:149)
at com.itextpdf.text.pdf.PdfReader.readDecryptedDocObj(PdfReader.java:1024)
at com.itextpdf.text.pdf.PdfReader.readDocObj(PdfReader.java:1427)
at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:732)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:181)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:219)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:207)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:197)
at com.notes.pdf.PdfUtil.getText(PdfUtil.java:45)
at com.notes.pdf.PdfUtil.main(PdfUtil.java:18)
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.asn1.ASN1OctetString
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 10 more
【解决办法】
引入bcprov-ext-jdk15on-154.jar,即可以解决问题
如果使用maven,可以引入
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.54</version>
</dependency>
补充一下,这个应该是加密的pdf文档,如果不引入bcprov-ext,无法解析加密文档