0

我正在尝试使用 RedMon 将打印机的 .PS 文件重定向到我的 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());
    }
}
}

我怎样才能让它工作?

4

1 回答 1

0

因此,如果我没看错的话,您已经设置了 RedMon 以将发送到端口的数据发送到您的 Java 应用程序。

然后您系统调用 Ghostscript(使用 ps2pdf 脚本)并告诉它从标准输入读取。

但是 Ghostscript 标准输入不是你的 Java 程序的标准输入,除非我误解了 Java 的某些方面。

我希望当您派生一个 Ghostscript 实例时,该应用程序会获得自己的标准输入,这与与您的 Java 程序关联的标准输入不同。

最好的办法是将 Java 程序的输入写入文件,完成后在文件上执行 Ghostscript。

于 2016-10-27T19:32:47.883 回答