2009-04-26 6 views
0

PageFormat 정보를 사용하여 인쇄하기 전에 javax.swing 기반 인쇄물을 수정하려고합니다. 필자는 PrintJob (getPrinterJob() 및 printDialog()를 사용하여 얻음)에서 PageFormat을 가져올 수있는 방법에 대해 혼란 스럽습니다. getPageFormat 메서드가 있다는 것을 알고 있지만 printJob.getPrintService(). getPrintAttributes()가 아닌 PrintRequestAttributeSet을 가져 오는 방법을 알아낼 수 없습니다. 솔직히 내가 아는 모든 것은 페이지의 너비와 높이입니다. 내가 어떻게 할 수 있는지에 대한 아이디어가 있습니까? 감사.Java.awt.print.PrinterJob에서 PageFormat을 가져 오는 방법

+0

이 문제는 인쇄 작업의 PageFormat을 가져올 수 없습니다. –

답변

0

그냥 페이지 너비와 높이가 필요하면 PageFormat.getImageableWidth() 및 PageFormat.getImageableHeight()를 찾고 있다고 생각합니다.

죄송합니다. 원하는 것은 아닙니다. 이 방법에 대해 해킹에 대한 :

printable.setFakeJob(true); 
job.print(); 
printable.setFakeJob(false); 
job.print(); 

및 인쇄에

,

public int print(Graphics graphics, PageFormat pf, int pageIndex) { 
    if (isFakeJob()) { 
     /* use passed-in PageFormat to set up whatever you need to set up */ 
     return NO_SUCH_PAGE; 
    } else { 
     /* do your actual printing */ 
    } 
} 

꽤 아니, 틀림없이.

+0

그게 문제, 나는 인쇄 작업에 대한 PageFormat을 얻을 수 없습니다. –

+0

죄송합니다. 질문을 잘못 읽었습니다. 이제는 이해할 수 있다고 생각합니다. * Printable.print (Graphics, PageFormat, int) 메서드가 호출되기 전에 페이지 크기 *를 가져 오려고합니다. 불행히도 나는 그것을 할 수있는 방법을 볼 수 없습니다 : PrinterJob은 PrinterJob.print()를 호출하지 않고 사용자가 인쇄 대화 상자에서 선택한 항목에 액세스 할 수 있도록하지 않습니다. 다른 해답으로 게시 할 해킹 아이디어가 있습니다. –

+0

그것은 추악하지만 작동하지 않습니다. –

2

"가짜"인쇄 작업을 실행하는 방식은 적어도 장기적으로는 작동하지 않습니다. 나는 그것을 시도했다. 처음에는 훌륭하게 작동했는데 일부 고객은 이상한 행동을 신고하기 시작했습니다.

일부 프린터 프린터 및 일부 구성에서는 "가짜"작업조차도 프린터에서 작동합니다. 문서 페이지는 인쇄되지 않지만 대기열 활동, 작업 헤더 페이지, 때로는 약간의 가비지 출력 (내가 상기 한 것처럼). 가짜 대기열 항목은 정상적인 인쇄를 방해하거나 경우에 따라 사용자에게 혼란을주기에 충분했습니다.

예, 앞서 PageFormat을 가져 오는 것은 힘들었습니다.