Я создаю Java-процесс, используя ProcessBuilder для ghostscript, чтобы преобразовать PDF в TIFF, как показано ниже.
process = new ProcessBuilder("D:\\ghost-script\\gs\\gs9.02\\bin\\gswin64.exe","-q", "-dNOPAUSE", "-dBATCH", "-dMaxStripSize=8192", "-sDEVICE=tiffg4", "-r300x300", "-dDITHERPPI=200", "-sOutputFile=D:\\ghost-script\\example\\output.tif", "D:\\ghost-script\\example\\input2.pdf", "-c", "quit").start();
Теперь у меня две проблемы.
- Этот процесс открывает всплывающее окно консоли, которое мне не нужно, поскольку оно должно запускаться на сервере. Какой параметр я могу установить, чтобы отключить всплывающее окно консоли.
- Входной файл может быть любого размера. Как мне узнать, что процесс завершился, чтобы я мог его уничтожить. Мне не нужен Thread.sleep (time-to_sleep). Поскольку для другого размера входного файла он отличается, и если я возьму верхний предел, это сильно снизит производительность для файлов меньшего размера. Итак, что я могу сделать, чтобы уничтожить процесс, как только он будет завершен?
Любая помощь горячо приветствуется.
Process#waitFor
может быть хорошим началом для второго вопроса, но вы должны быть уверены, что читаете потоки вывода / ошибок процесса, чтобы убедиться, что он не останавливается / не блокируется. Что касается первого вопроса, я не уверен, что вы сможете, но вы можете использоватьstart
илиcmd
для запуска свернутого окна - person MadProgrammer   schedule 26.02.2016InputStream
процесса, и если вы ничего не читали в течение определенного периода времени, попробуй иdestory
процесс - person MadProgrammer   schedule 26.02.2016