2015-10-20 2 views
0

Я использую JODConverter для подключения к OpenOffice 4 и конвертирования RTF-документов в pdf.Соединение конвертера JOD отказалось в первый раз

Все работает отлично, за исключением одной странной проблемы, в первый раз, когда я пытаюсь преобразовать, я получаю отказ от отказа 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) 

Любой знает, почему это происходит? И как я могу исправить эту странную проблему?

Благодарим за консультацию, извините за мой неподдельный английский.

+0

Я «исправил» его с добавлением сна 3s до соединения .connect() – Luca89

ответ

1

У вас есть разумные взгляды. Однако вместо использования сна может быть лучше начать 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/.

+0

Да Я попытался запустить soffice при запуске, но тогда я не могу открыть какой-либо документ с OpenOffice, поэтому мне нужно запустить процесс soffice во время выполнения и закрыть его после преобразования. (Этот скрипт является частью программного обеспечения, которое запускается при запуске и должно запускать все время, когда компьютер включен) – Luca89

Смежные вопросы