【问题标题】:LibreOffice (soffice) issue while converting on Amazon ec2在 Amazon ec2 上转换时出现 LibreOffice (soffice) 问题
【发布时间】:2016-09-16 16:33:44
【问题描述】:

这不是转发,我要求的是 Amazon ec2 实例!其他人提出的问题在我的本地机器上运行良好,这些问题都得到了解决,但在亚马逊上却没有。

关于这个问题已经有好几份报告了,但没有一个能解决我这个问题。 发布一些解决方案:

https://forum.openoffice.org/en/forum/viewtopic.php?p=88088

https://forum.openoffice.org/en/forum/viewtopic.php?f=16&t=4767&p=21890&hilit=jodconverter#p21890

https://forum.openoffice.org/en/forum/viewtopic.php?f=16&t=4767&p=21948&hilit=jodconverter#p21948

这些是我采取的步骤:

  1. 在一个全新的 EC2 Amazon 实例上,我安装了 libre office commons

$sudo apt-get install libreoffice-common

  1. 然后是 Maven

  2. 运行我正在使用的服务(也尝试使用 sudo)

$soffice -nologo -nofirststartwizard -headless -norestore -invisible "-accept=socket,host=localhost,port=8100,tcpNoDelay=1;urp;"

  1. 所有端口和所有证券都对 ec2 实例开放

  2. 这是我的代码

import com.artofsolving.jodconverter.DocumentConverter;

import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;

import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;

import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

import java.io.File;

/** * soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard */ public class testrun {

public static void main(String[] args){ try { File inputFile = new File("./test.html"); File outputFile = new File("./OK.pdf");

// connect to an OpenOffice.org instance running on port 8100 SocketOpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100); connection.connect();

// convert DocumentConverter converter = new OpenOfficeDocumentConverter(connection); converter.convert(inputFile, outputFile);

// close the connection connection.disconnect(); }catch (Exception e){e.printStackTrace();} }

}

  1. 这是我的 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>

<groupId>izbr</groupId> <artifactId>izbr</artifactId> <version>1.0-SNAPSHOT</version>

<dependencies> <!-- https://mvnrepository.com/artifact/com.artofsolving/jodconverter --> <dependency> <groupId>com.artofsolving</groupId> <artifactId>jodconverter</artifactId> <version>2.2.1</version> </dependency>

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.4.3</version> </dependency>

</dependencies>

  1. 我的 Java 版本是 openjdk 版本“1.8.0_91” OpenJDK 运行时环境 (build 1.8.0_91-8u91-b14-0ubuntu4~14.04-b14) OpenJDK 64 位服务器 VM(内部版本 25.91-b14,混合模式)

  2. 当我跑步时

$mvn exec:java -Dexec.mainClass="testrun"

错误是: 116 [testrun.main()] 信息 com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection - 已连接 com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException:转换失败:无法保存输出文档 在 com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadAndExport(OpenOfficeDocumentConverter.java:144) 在 com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.convertInternal(OpenOfficeDocumentConverter.java:120) 在 com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:104) 在 com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:74) 在 com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:70) 在 testrun.main(testrun.java:24) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:294) 在 java.lang.Thread.run(Thread.java:745) 引起:java.lang.reflect.UndeclaredThrowableException 在 com.sun.proxy.$Proxy26.storeToURL(未知来源) 在 com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.storeDocument(OpenOfficeDocumentConverter.java:156) 在 com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadAndExport(OpenOfficeDocumentConverter.java:140) ... 11 更多 引起:com.sun.star.ucb.InteractiveAugmentedIOException:打开文件时出错 在 com.sun.star.lib.uno.environments.remote.Job.remoteUnoRequestRaisedException(Job.java:187) 在 com.sun.star.lib.uno.environments.remote.Job.execute(Job.java:153) 在 com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:349) 在 com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:318) 在 com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:106) 在 com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:657) 在 com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:159) 在 com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:141) ... 14 更多

我已经尝试了所有建议,例如列出侦听端口,然后更改 soffice 的端口号。也作为 sudo 运行,等等。 没有解决方案有帮助。我已经在 /usr/bin/soffice /usr/bin/X11/soffice 上完成了 chmod 777 ,但没有奏效。

请注意,它在我的机器上运行,但在 Amazon ec2 上却没有,即使所有端口和服务都打开了!

【问题讨论】:

    标签: amazon-ec2 type-conversion runtime-error libreoffice


    【解决方案1】:

    编辑:这对我有用,请根据您的代码调整步骤。更改对文件夹的权限和我发现的其他答案根本没有帮助。这是我自己想出来的。

    升级/更新实例

    $ sudo apt-get 升级

    $ sudo apt-get 更新

    1. 安装 java jdk 8

    $ sudo add-apt-repository ppa:webupd8team/java

    $ sudo apt-get 更新

    $ sudo apt-get install oracle-java8-installer

    $ sudo apt-get install oracle-java8-set-default

    1. 安装 Maven

    $ sudo add-apt-repository "deb http://ppa.launchpad.net/natecarlson/maven3/ubuntu 精确主"

    $ sudo apt-get 更新

    $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6DTHIS_IS_HEX_FROM_ERRORFA0101

    $ sudo apt-get install maven3

    $ sudo ln -s /usr/share/maven3/bin/mvn /usr/bin/mvn

    $ sudo apt-get 更新

    1. 安装LibreOffice(完整!),然后检查是否有通用的,通常有

    $ sudo apt-get install libreoffice

    $ sudo apt-get install libreoffice-common

    1. 打开一个新选项卡,仅用于测试连接,SSH 到 EC2 并执行

    $ soffice -nologo -nofirststartwizard -headless -norestore -invisible "-accept=socket,host=localhost,port=8100,tcpNoDelay=1;urp;"

    1. 转到一个项目/测试并调整 pom.xml

    $ 纳米 pom.xml

    <dependency>
    
        <groupId>com.artofsolving</groupId>
    
        <artifactId>jodconverter</artifactId>
    
        <version>2.2.1</version>
    
    </dependency>
    
    1. 调整源代码,使 A 行与 B 行发生变化,确保 in-file 和 out-file(如果有)是正确的路径,并且它们存在

    A:OpenOfficeConnection 连接 = new SocketOpenOfficeConnection(8100);

    B: SocketOpenOfficeConnection 连接 = new SocketOpenOfficeConnection("127.0.0.1", 8100);

    1. 使用 maven 全新安装项目

    $ mvn 全新安装

    1. 例如运行项目/测试:

    $ mvn exec:java -Dexec.mainClass="testrun"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 2011-07-27
      • 2012-11-27
      • 1970-01-01
      相关资源
      最近更新 更多