如何在JodConverter中从doc或pdf阅读文本

问题描述 投票:0回答:1

原因:

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'boolean java.io.File.isDirectory()'

LocalOfficeManager officeManager = LocalOfficeManager.install();
try {
  // Start an office process and connect to the started instance (on port 2002).
  officeManager.start();
  File inputFile = new File("storage/emulated/0/COVID-19/111.pdf");
  wordtext = String.valueOf(JodConverter.convert(inputFile));
} catch (OfficeException e) {
  e.printStackTrace();
} finally {
  // Stop the office process
  OfficeUtils.stopQuietly(officeManager);
}

E / AndroidRuntime:致命例外:主进程:handbook_multi_maker.TJ,PID:17976 java.lang.RuntimeException:无法启动活动ComponentInfo {handbook_multi_maker.TJ/TJ.SecondActivity}:java.lang.NullPointerException:尝试调用虚拟在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3107)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3250)上的NULL.Object对象上的方法'boolean java.io.File.isDirectory()' .app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)位于android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)位于android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)位于android.os.Looper.loop(Looper.java:214)处的android.os.Handler.dispatchMessage(Handler.java:106)处的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1947) .ActivityThread.main(ActivityThread.java:7032)在Java。 com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493)上的lang.reflect.Method.invoke(本地方法)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964) )由以下原因引起:java.lang.NullPointerException:尝试在org.jodconverter.local.office.LocalOfficeUtils.validateOfficeHome(LocalOfficeUtils.java:339上的空对象引用上调用虚拟方法'boolean java.io.File.isDirectory()' )位于org.jodconverter.local.office.LocalOfficeManager.install(LocalOfficeManager.java:78)位于org.jodconverter.local.office.LocalOfficeManager $ Builder.build(LocalOfficeManager.java:169)在TJ.SecondActivity.initWebView(SecondActivity。于TJ.SecondActivity.onCreate(SecondActivity.java:104)处的android.app.Activity.performCreate(Activity.java:7327)处的android.app.Activity.performCreate(Activity.java:7318)处的Java:132)。 app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3087)位于ndroid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3250)位于android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)位于android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) .app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1947)在android.os.Handler.dispatchMessage(Handler.java:106)。 os.Looper.loop(Looper.java:214)在android.app.ActivityThread.main(ActivityThread.java:7032)在com.android.internal.os的java.lang.reflect.Method.invoke(Native Method)。 RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

java android mobile apache-poi core
1个回答
0
投票
您收到此错误,是因为JODConverter的默认行为是自动检测将要使用的Office(LibreOffice或Apache OpenOffice)安装。在您的特定情况下,找不到Office主目录(因此为null)。

因此,如果您的Office安装位于自定义目录中,则可以使用officeHome属性。

这是您的更新代码:

OfficeManager officeManager = LocalOfficeManager.builder() .officeHome("Path to your office home") .install() .build(); try { // Start an office process and connect to the started instance (on port 2002). officeManager.start(); File inputFile = new File("storage/emulated/0/COVID-19/111.pdf"); wordtext = String.valueOf(JodConverter.convert(inputFile)); } catch (OfficeException e) { e.printStackTrace(); } finally { // Stop the office process OfficeUtils.stopQuietly(officeManager); }

© www.soinside.com 2019 - 2024. All rights reserved.