【问题标题】:JODConverter error androidJODConverter错误android
【发布时间】:2015-06-28 00:22:09
【问题描述】:

这是一个关于 stackoverflow 的特别新问题。我想知道如何使用 Jodconverter 库在 android 上进行文件转换。我看到很多例子和问题,但都是基于 java 的,甚至没有回答 android 的特定问题,甚至没有官方网站。虽然我确实看到所有者本人在他发布的一个 android 应用程序中使用了该库,因此可以使用 JODconverter 在 android 上进行转换。

以下代码来自官方网站,安卓版本:

OfficeManager officeManager = new DefaultOfficeManagerConfiguration().buildOfficeManager();   
    officeManager.start();   
    OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);   
    try{  
        converter.convert(new File("/sdcard/tsxt.doc"), new File("/sdcard/tsx465t.docx"));   

    }catch(Exception e){  
        e.printStackTrace();  
    }  
    officeManager.stop(); 

我在运行时得到的崩溃的 Logcat 输出包括除 unoil 库之外的所有库(因为添加 unoil 会导致我转换为 Dalvik 失败错误):

06-28 05:28:50.086: E/AndroidRuntime(28629): FATAL EXCEPTION: main
06-28 05:28:50.086: E/AndroidRuntime(28629): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jopendocs/com.example.jopendocs.JODActivity}: java.lang.IllegalStateException: officeHome not set and could not be auto-detected
06-28 05:28:50.086: E/AndroidRuntime(28629):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2246)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2296)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at android.app.ActivityThread.access$700(ActivityThread.java:151)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at android.os.Looper.loop(Looper.java:137)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at android.app.ActivityThread.main(ActivityThread.java:5293)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at java.lang.reflect.Method.invokeNative(Native Method)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at java.lang.reflect.Method.invoke(Method.java:511)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at dalvik.system.NativeStart.main(Native Method)
06-28 05:28:50.086: E/AndroidRuntime(28629): Caused by: java.lang.IllegalStateException: officeHome not set and could not be auto-detected
06-28 05:28:50.086: E/AndroidRuntime(28629):    at org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration.buildOfficeManager(DefaultOfficeManagerConfiguration.java:163)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at com.example.jopendocs.JODActivity.onCreate(JODActivity.java:22)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at android.app.Activity.performCreate(Activity.java:5250)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
06-28 05:28:50.086: E/AndroidRuntime(28629):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2210)
06-28 05:28:50.086: E/AndroidRuntime(28629):    ... 11 more

【问题讨论】:

  • 你找到解决办法了吗?

标签: java android jodconverter


【解决方案1】:

我认为这不可能,因为JODConverter 需要有效的OpenOffice 安装。 在启动时,该库尝试猜测OpenOffice 安装文件夹(大多数情况下,根据操作系统,OpenOffice 位于特定文件夹), 但在Android 下,我不确定这是否可能。 我没有Android 设备,我不知道OpenOffice 在这个操作系统上是否可用。 如果是,则必须设置officeHome 属性(如果我是对的,请查看org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration 类)

【讨论】:

    【解决方案2】:

    官网的代码和你的不一样:

    final LocalOfficeManager officeManager = LocalOfficeManager.install(); 
    try {
    
        // Start an office process and connect to the started instance (on port 2002).
        officeManager.start();
    
        // Convert
        JodConverter
                 .convert(inputFile)
                 .to(outputFile)
                 .execute();
    } finally {
        // Stop the office process
        OfficeUtils.stopQuietly(officeManager);
    }     
    

    【讨论】:

    • 由于可以在堆栈跟踪中看到artofsolving,我们可以假设我们正在谈论的 JODConverter 版本不是您发布的示例中使用的版本。但就像@LouMéou 所说,我不确定是否可以在 android 上使用 JODconverter,因为它需要(Libre 或 Open)Office 安装。
    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多