2011-08-29 2 views
2

을 사용하여 문서를 인쇄 할 수 없습니다. IP 주소, 프린터 이름을 사용하여 특정 프린터로 문서를 인쇄하고 오류 및 예외없이 잘 실행되는 프로그램을 구현했습니다. 자바에서 프린터 작업을 보내고 있습니다. 로컬 프린터 인쇄 풀에서이 작업을 볼 수 있지만 페이지가 프린터로 인쇄되지 않습니다.Java 프린터 서비스 (JPS)

URI myURI=null; 
FileInputStream psStream=null; 
try { 
    psStream = new FileInputStream("sample.doc"); 
} 
catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
DocFlavor psInFormat = DocFlavor.BYTE_ARRAY.GIF; 
Doc myDoc = new SimpleDoc(psStream, psInFormat, null); 
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); 
PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, aset); 
if (services.length > 0) { 
    DocPrintJob job = services[0].createPrintJob();   
    try { 
     job.print(myDoc, aset); 
    } 
    catch (PrintException e){ 
    } 
} 

제발 나를 도울 수 있을까요?

감사합니다, 스리 칸스 Chilukuri


가 나는 문제를 발견했다.

psStream = new FileInputStream("sample.doc");  

위의 진술은 문제를 만듭니다. MS 워드 응용 프로그램이므로 파일 입력 스트림을 사용하여 파일을 읽을 수 없습니다.

나는 POI 항아리를 사용 중이며 의사를 읽고 있습니다.

POIFSFileSystem psStream = new POIFSFileSystem(new FileInputStream(filesname)); 
Doc myDoc = new SimpleDoc(psStream, psInFormat, null); 

그러나 문서의 API가 supporing되지 당신이 나를 도와 주 시겠어요 IllegalArgumentException가

에게
Exception in thread "Main Thread" java.lang.IllegalArgumentException: data is not of declared type 
    at javax.print.SimpleDoc.<init>(SimpleDoc.java:82) 
    at com.src.print.TestPrint2.main(TestPrint2.java:67) 

을 얻었다.

+1

문제가 해결되지 않을 수도 있지만'PrintException'을 자동으로 무시해서는 안됩니다. –

답변

0

Java 인쇄 서비스를 사용하면 Swing과 같은 페이지를 "그릴"수 있고 그 결과를 프린터로 보낼 수 있습니다. Word 형식이나 HTML 페이지 또는 이와 유사한 정보를 가지고 있지 않습니다.

따라서 문서 파일의 내용을 프린터에 그리는 방법을 알고있는 모듈이 필요합니다. 개인적으로 그러한 모듈에 대한 경험이 없습니다. 응답

에 대한

0

덕분에 난 당신이 AWT 인쇄에 대해 얘기 같아요. 이것은 Java 인쇄 서비스와 다릅니다. 당신은 텍스트 데이터는 Java 인쇄 서비스 (JPS)를 사용하여 다양한 옵션을 사용하여 인쇄 미리 포맷 한 한 수

http://docs.oracle.com/javase/1.5.0/docs/guide/jps/spec/docflavor.fm1.html#998469

문제는에서 제공되는 파일은 UTF-8을 사용하여 인코딩이 사용 JPS를 인쇄 할 때 정상적인 ASCII 파일 인 경우. 제대로 인쇄됩니다.