Перенаправьте файл.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 для этого файла.