Перенаправьте файл.PS принтера с RedMon в мой код Java

Я пытаюсь перенаправить файл.PS принтера с RedMon в мой код Java.

Конфигурация порта RedMon:

Перенаправить на программу: C: \ Program Files \ Java \ jre1.8.0_111 \ bin \ java.exe

Аргументы: -jar c: \ dist \ JavaApplication5.jar --stdin

и код Java:

public class JavaAplication5 {

public static void main(String[] args) throws FileNotFoundException {
    BasicConfigurator.configure();                          //log4j
    System.setProperty("jna.library.path", "C:\\dist\\");   //fix path to gsdll

     FileInputStream file = new FileInputStream(args[0]);
     Ghostscript gs = Ghostscript.getInstance(); 
     String[] gsArgs = new String[10];
    gsArgs[0] = "-ps2pdf";
    gsArgs[1] = "-dNOPAUSE";
    gsArgs[2] = "-dBATCH";
    gsArgs[3] = "-dSAFER";
    gsArgs[4] = "-sDEVICE=pdfwrite";
    gsArgs[5] = "-sOutputFile=output.pdf";
    gsArgs[6] = "-c";
    gsArgs[7] = ".setpdfwrite";
    gsArgs[8] = "-f";
    gsArgs[9] =  String.format(" %s ", file) ;        

    try { 
        gs.initialize(gsArgs);
        gs.exit(); 
    } catch (GhostscriptException e) {
        JOptionPane.showMessageDialog(null, "ERROR: " + e.getMessage());
    }
}
}

Как я могу заставить это работать?

1 ответ

Так что, если я правильно прочитал, вы настроили RedMon для отправки данных, отправленных на порт, в ваше Java-приложение.

Затем вы вызываете системный вызов Ghostscript (используя скрипт ps2pdf) и говорите ему читать из stdin.

Но stdin Ghostscript не является стандартом вашей Java-программы, если я неправильно понимаю некоторые аспекты Java.

Я ожидаю, что когда вы разветвляете экземпляр Ghostscript, это приложение получает свой собственный стандартный ввод, который отличается от стандартного ввода, связанного с вашей Java-программой.

Лучше всего было бы записать входные данные для вашей Java-программы в файл и по завершении выполнить Ghostscript для этого файла.

Другие вопросы по тегам