我正在尝试读取 .pdf 文件,因为我在活动按钮单击中使用以下代码,但
'Loader.loadPDF(file);'
每次显示错误时都不起作用。
public void ReadMyPdfFile(View v){
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "mPDF.pdf");
List<String> pageTexts = new ArrayList<>();
PDDocument pdDocument = null;
try {
pdDocument = Loader.loadPDF(file);//<-- error on this line
int k = 0;
} catch (IOException e) {
Log.i(TAG, "ReadMyPdfFile: Exception++ " + e.getMessage());
throw new RuntimeException(e);
}
}
日志猫
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Point; at org.apache.pdfbox.pdmodel.PDDocument.<clinit>(PDDocument.java:104) at org.apache.pdfbox.pdfparser.PDFParser.createDocument(PDFParser.java:209) at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:187) at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:156) at org.apache.pdfbox.Loader.loadPDF(Loader.java:466) at org.apache.pdfbox.Loader.loadPDF(Loader.java:348) at org.apache.pdfbox.Loader.loadPDF(Loader.java:303) at org.apache.pdfbox.Loader.loadPDF(Loader.java:246)
在“build.gradle”中添加以下依赖项
implementation 'org.apache.pdfbox:pdfbox:3.0.0'
implementation 'org.apache.pdfbox:fontbox:3.0.0'
任何机构可以帮助我解决这个问题吗?
您无法在 Android 上使用普通 PDFBox,因为它依赖于 Android 上的 Java 不使用的标准 Java 图形库
awt
。
有一个适用于 Android 的端口,因此请使用以下依赖项
dependencies {
implementation 'com.tom-roush:pdfbox-android:2.0.27.0'
}
虽然我发现内置的 pdf 库 PDFDocument 和 PdfRenderer 足够好,不需要像
pdfbox
或 itext
这样的外部库存在许可/兼容性问题。