首页 文章

在亚马逊ec2上转换时的LibreOffice(soffice)问题

提问于
浏览
0

这不是转发,我要求 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

这些是我采取的步骤:

  • 在新的EC2 Amazon实例上,我安装了libre office commons

$ sudo apt-get install libreoffice-common

  • 然后是Maven

  • 运行我正在使用的服务(也尝试作为sudo)

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

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

  • 这是我的代码

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();} }

}

  • 这是我的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>

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

  • 我跑的时候

$ mvn exec:java -Dexec.mainClass =“testrun”

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

我已经尝试了所有建议,例如列出监听端口,然后更改soffice的端口号 . 也作为sudo运行,依此类推 . 没有解决方案帮助我在/ usr / bin / soffice / usr / bin / X11 / soffice上做了一个chmod 777,但是没有用 .

请注意,即使所有端口和服务都已打开,它仍在我的mahcine上工作,但不在亚马逊ec2上!

1 回答

  • 0

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

    升级/更新实例

    $ sudo apt-get升级

    $ sudo apt-get update

    • 安装java jdk 8

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

    $ sudo apt-get update

    $ sudo apt-get install oracle-java8-installer

    $ sudoapt-get install oracle-java8-set-default

    • 安装Maven

    $ sudo add-apt-repository“deb http://ppa.launchpad.net/natecarlson/maven3/ubuntu exact main”

    $ sudo apt-get update

    $ 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 update

    • 安装LibreOffice(完整!),然后检查是否有共同的,通常有

    $ sudo apt-get install libreoffice

    $ sudo apt-get install libreoffice-common

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

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

    • 转到项目/测试并调整pom.xml

    $ nano pom.xml

    <dependency>
    
        <groupId>com.artofsolving</groupId>
    
        <artifactId>jodconverter</artifactId>
    
        <version>2.2.1</version>
    
    </dependency>
    
    • 调整源代码,以便用线B更改A行,确保文件内和文件外(如果有的话)是正确的路径,并确保它们存在

    答:OpenOfficeConnection连接=新的SocketOpenOfficeConnection(8100);

    B:SocketOpenOfficeConnection connection = new SocketOpenOfficeConnection(“127.0.0.1”,8100);

    • 用maven清理安装项目

    $ mvn clean install

    • 运行项目/测试例如:

    $ mvn exec:java -Dexec.mainClass =“testrun”

相关问题