먼저 프린터에 설치된 프린터가 20,000 대를 초과하므로 인쇄 서비스가 매우 느립니다 (룩업에서는 인쇄 사용시 javax
을 사용할 수 없습니다). lpstat은 매우 느립니다). 그래서 우리는 lpr을 사용하고 있습니다.인쇄 (lpr 사용)는 명령 줄에서 작동하지만 Java에서는 수행하지 않습니다.
나는이 수행 할 때
cat myfile.pdf | lpr -P "MyPrinter"
가 완벽하게 프린터 이름 MyPrinter
에 파일을 인쇄합니다. 나는 다음과 같은 오류가 발생합니다,
cmd = String.format("lpr -P \"%s\"", "MyPrinter");
Process p = Runtime.getRuntime().exec(cmd);
OutputStream out = p.getOutputStream();
/*
This essentially runs a thread which reads from a stream and
outputs it to the STDOUT. This is what I've written to help with
debugging
*/
StreamRedirect inRed = new StreamRedirect(p.getInputStream(), "IN");
StreamRedirect erRed = new StreamRedirect(p.getErrorStream(), "ER");
inRed.start();
erRed.start();
/*
This is where I write to lprs STDIN. `document` is an InputStream
*/
final byte buf[] = new byte[1024];
int len;
while((len = document.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.flush();
out.close();
을 :하지만 여기
SR[ER]>>lpr: The printer or class was not found.
는 SR[ER]
는 StreamRedirect
에 의해 접두사 단지 지정 레이블 자바에서 동일한 작업을 수행하기 위해, 나는이 일을하고 있습니다. 왜 이런 일이 일어나는 걸까요? 명령 줄에서 프린터를 실행할 때 프린터를 찾을 수있는 이유는 무엇입니까?
또한 Java 프로그램 내에서 whoami
을 실행하려했는데 로그인 한 사용자 (명령 줄에서 lpr
을 실행 한 동일한 사용자)로 실행하고 있다고합니다.
어떤 도움이 필요합니까?
나는 그것을 시도 할 것이지만, 그것이 어떤 차이를 만들지는 모르겠다. –
정말 고마워요 !! 그것은 효과가 있었다. (대답을 지금 받아 들일 수 없습니다. 2 분 안에 할 것입니다.) –
@RohanPrabhu : API 문서를 확인 했습니까? 그것은'.exec (cmd)'에 대한 인수가 문자열 배열로 주어질 필요가 있음을 분명히 말합니다. 즉, 명령에 인수가있는 경우 배열에 있어야합니다. – posdef