我目前正在尝试制作一个 android应用,该应用使用 PDF框从一些pdf文件中提取文本。 我将 pdfbox-app-2.0.17.jar (来自apache网站)放在libs文件夹中,并为其添加了依赖项。
build.gradle(app):
implementation files('libs/pdfbox-app-2.0.17.jar')
我遵循了本教程:
https://radixcode.com/pdfbox-example-code-how-to-extract-text-from-pdf-file-with-java
但是,当我调用PDFManager.getText方法时,它将失败。
它给出的异常:
E/AndroidRuntime: FATAL EXCEPTION: Thread-2
Process: com.me.project, PID: 32290
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Point;
at org.apache.pdfbox.pdmodel.PDDocument.<clinit>(PDDocument.java:106)
at com.me.project.PDFManager.toText(PDFManager.java:38)
at com.me.project.ServicePDF.PDFInhalt(ServicePDF.java:148)
at com.me.project.ServicePDF.access$000(ServicePDF.java:28)
at com.me.project.ServicePDF$1.run(ServicePDF.java:115)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.awt.Point" on path: DexPathList[[zip file
"/data/app/com.me.project-gsjMeS5Tu42ZqNOoyKR0bg==/base.apk"],nativeLibraryDirectories=[/data/app/com.me.project-gsjMeS5Tu42ZqNOoyKR0bg==/lib/arm64,
/system/lib64, /vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:171)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at org.apache.pdfbox.pdmodel.PDDocument.<clinit>(PDDocument.java:106)
at com.me.project.PDFManager.toText(PDFManager.java:38)
at com.me.project.ServicePDF.PDFInhalt(ServicePDF.java:148)
at com.me.project.ServicePDF.access$000(ServicePDF.java:28)
at com.me.project.ServicePDF$1.run(ServicePDF.java:115)
at java.lang.Thread.run(Thread.java:764)
我在多个 PDF 上尝试过,例如:
https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf
我见过有类似问题的人,但对他们的回答并不多。解决方案可能是显而易见的,因为我根本没有经验。我不知道这是否与PDFBox本身有关,因此我先在这里寻求帮助。