2011-03-02 4 views
1

이 프린터에서 인쇄하는 데 문제가 있습니다.Java를 사용하여 이더넷을 통해 Printronix T5000r에서 인쇄

public void print(String fileName, String printerIp) { 

try { 
    BufferedReader streamIn = new BufferedReader(new FileReader(fileName)); 
    String line; 

    Socket socket = new Socket(printerIp, 9100); 
    Writer writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 

    while ((line = streamIn.readLine()) != null) { 
    writer.write(line); 
    } 
    writer.flush(); 
    socket.close(); 
    streamIn.close(); 

} 

모든 상황이 정상이지만 프린터가 인쇄되지 않습니다. 다른 프로그램을 사용하여 인쇄해도 문제가 없습니다. 의견이 있으십니까?

+1

올바른 프로토콜을 사용하고 있습니까? 여기에 파일을 가져다가 직접 프린터로 가져 오는 것처럼 보입니다. 적절한 인쇄 프로토콜을 사용해야합니다. http://en.wikipedia.org/wiki/JetDirect – Piskvor

+0

또한 흥미로울 수 있습니다. http://download.oracle.com/javase/7/docs/technotes/guides/jps/spec/printing.fm6.html#1000147 – Piskvor

+0

printService에 관해서는 IP를 통해 프린터를 지정할 방법이 없다고 생각합니다. 프린터에 전체 파일을 덤핑하는 몇 가지 예가 있습니까? –

답변

1

해결책은 전체 파일을 프린터에 쓰는 것입니다.

public void printFile(File file, String printerIp) throws PrintException, IOException { 

      Socket socket = new Socket(printerIp, 9100); 

      FileInputStream fileInputStream = new FileInputStream(file); 
      byte [] mybytearray = new byte [(int)file.length()]; 

      fileInputStream.read(mybytearray,0,mybytearray.length); 

      OutputStream outputStream = socket.getOutputStream(); 

      outputStream.write(mybytearray,0,mybytearray.length); 

       //Curious thing is that we have to wait some time to make more prints. 
      try { 
       Thread.sleep(500); 
      } catch (InterruptedException e) { 

      } 

      outputStream.flush(); 
      outputStream.close(); 
      socket.close(); 
      fileInputStream.close(); 
     } 
관련 문제