在 Amazon ec2 上转换时出现 LibreOffice (soffice) 问题

LibreOffice (soffice) issue while converting on Amazon ec2

这不是 repost,我要的是 Amazon ec2 实例!其他人问的问题在我的本地机器上运行良好,并且解决了,但在亚马逊上没有。

关于这个问题已经有好几份报告,但没有一个能解决这个问题。 给post几个解决方案:

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(摘要OpenOfficeDocumentConverter.java:104) 在 com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(摘要OpenOfficeDocumentConverter.java:74) 在 com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(摘要OpenOfficeDocumentConverter.java:70) 在 testrun.main(testrun.java:24) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 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 更多 Caused by: 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 的端口号。还有 运行ning 作为 sudo,等等。 没有解决方案有帮助。我在 /usr/bin/soffice /usr/bin/X11/soffice 上执行了 chmod 777,但没有用。

请注意它在我的机器上工作,但在 Amazon ec2 上不工作,即使所有端口和服务都打开!

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

Upgrade/Update实例

$ sudo apt-get 升级

$ sudo apt-get 更新

  1. 安装javajdk8

$ 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 precise main"

$ 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. 转到 project/testing 并调整 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 连接 = 新的 SocketOpenOfficeConnection(8100);

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

  1. 使用 maven 干净安装项目

$ mvn 全新安装

  1. 运行 project/test 例如:

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