JOD转换器连接第一次被拒绝

时间:2015-10-20 07:35:18

标签: pdf converter rtf openoffice.org jodconverter

我使用JODConverter连接到OpenOffice 4并将rtf文档转换为pdf。

除了一个奇怪的问题外它一切正常,第一次尝试转换时我得到一个Connection拒绝异常;它从第二次开始工作。

我在计算机启动后的每次第一次转换时都会收到异常。

这是我的测试类

import java.io.File;
import java.io.IOException;

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;

public class ConverterServiceTest 
{

    public static void main(String[] args) throws IOException
    {
        File inputFile = new File("C:/Prova/Esempi/TestSign.rtf");
        File outputFile = new File("C:/Prova/Esempi/TestSign.pdf");
        int openOfficePort = 8100;
        System.out.println("Provo a lanciare il processo di OpenOffice");
        String command = "\"C:/Program Files (x86)/OpenOffice 4/program/soffice.exe\"" + 
                "-headless -accept=\"socket,host=localhost,port="
                + openOfficePort + ";urp;\" -nofirststartwizard";
        System.out.println("Comando = " + command);
        Process p = Runtime.getRuntime().exec(command);
        System.out.println("OpenOffice lanciato, provo la connessione alla porta "
                                                                    + openOfficePort);
        OpenOfficeConnection connection = 
                new SocketOpenOfficeConnection(openOfficePort);
        connection.connect();   
        System.out.println("Connessione aperta! Provo la conversione");
        DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
        converter.convert(inputFile, outputFile);   
        System.out.println("Conversione effettuata");
        connection.disconnect();
        p.destroy();
        System.out.println("Connessione chiusa e processo killato");
    }

}

这是例外:

Exception in thread "main" java.net.ConnectException: connection failed: socket,host=localhost,port=8100,tcpNoDelay=1: java.net.ConnectException: Connection refused: connect
    at com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection.connect(AbstractOpenOfficeConnection.java:79)
    at test.converter.ConverterServiceTest.main(ConverterServiceTest.java:29)

有谁知道为什么会这样?我怎么能解决这个奇怪的问题?

感谢您的建议,抱歉我的英语不完美。

1 个答案:

答案 0 :(得分:1)

你看起来合情合理。但是,不是使用sleep,而是从批处理文件或脚本文件启动soffice可能更好。然后您的Java代码可以连接到正在运行的实例。请参阅https://forum.openoffice.org/en/forum/viewtopic.php?t=1014

另一种方法是直接使用OpenOffice。例如:

soffice.exe --headless --convert-to pdf *.rtf

请参阅https://ask.libreoffice.org/en/question/6571/whats-the-best-way-to-batch-convert-odf-to-pdf-on-windows/