Как читать текст из do c или pdf в JodConverter - PullRequest
0 голосов
/ 06 апреля 2020

Причина:

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: FATAL EXCEPTION: main Процесс: handbook_multi_maker.TJ, PID: 17976 java .lang.RuntimeException: Невозможно запустить действие ComponentInfo {handbook_multi_maker .TJ / TJ.SecondActivity}: java .lang.NullPointerException: попытка вызвать виртуальный метод 'boolean java .io.File.isDirectory ()' для пустой ссылки на объект в android .app.ActivityThread.performLaunchActivity (ActivityThread. java: 3107) в android .app.ActivityThread.handleLaunchActivity (ActivityThread. java: 3250) в android .app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem. java: 78) в android .app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor. java: 108) в android .app.servertransaction.TransactionExecutor.execute (TransactionExecutor. java: 68) в android .app.Act ivityThread $ H.handleMessage (ActivityThread. java: 1947) в android .os.Handler.dispatchMessage (Обработчик. java: 106) в android .os.Looper.l oop (Looper. java: 214) в android .app.ActivityThread.main (ActivityThread. java: 7032) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os .RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 493) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 964) Причина: java .lang.NullPointerException: попытка вызвать виртуальный метод 'boolean java .io.File.isDirectory ()' для ссылки на пустой объект в org.jodconverter.local.office.LocalOfficeUtils.validateOfficeHome (LocalOfficeUtils. java: 339) в org.jodconverter.local .office.LocalOfficeManager $ Builder.build (LocalOfficeManager. java: 169) в org.jodconverter.local.office.LocalOfficeManager.install (LocalOfficeManager. java: 78) в TJ.SecondActivity.initWebView. ВтороеA. : 132) в TJ.SecondActivity.onCreate (SecondActivity. java: 104) в android .app.Activity.perfor mCreate (Activity. java: 7327) в android .app.Activity.performCreate (Activity. java: 7318) в android .app.Instrumentation.callActivityOnCreate (Instrumentation. java: 1271) в android .app.ActivityThread.performLaunchActivity (ActivityThread. java: 3087) в android .app.ActivityThread.handleLaunchActivity (ActivityThread. java: 3250) в android .app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem) . java: 78) в android .app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor. java: 108) в android .app.servertransaction.TransactionExecutor.execute (TransactionExecutor. java: 68) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 1947) в android .os.Handler.dispatchMessage (Обработчик. java: 106) в android .os.Looper.l oop (Looper. java: 214) в android .app.ActivityThread.main (ActivityThread. java: 7032) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 493) в com. android .in ternal.os.ZygoteInit.main (ZygoteInit. java: 964)

1 Ответ

0 голосов
/ 13 апреля 2020

Вы получили эту ошибку, потому что стандартное поведение JODConverter заключается в автоматическом определении установки Office (LibreOffice или Apache OpenOffice), с которой вы будете работать. В вашем конкретном случае домашний каталог 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...