Java에서 PrinterJob을 프린터에 실제로 인쇄하지 않도록하여 각 페이지에 대한 그래픽 개체를 얻을 수있는 방법이 있습니까? PrintService를 null로 설정하려고 시도했지만 Java가 허용하지 않습니다.PrinterJob을 사용하여 이미지 인쇄 (Graphics2D)
본질적으로 다른 맥락에서 PrinterJobs 기능을 재구성하지 않고도 문서의 정확한 인쇄 미리보기를 검색 할 수 있습니다. 여기
내 프로그램의 인쇄 기능에 대한 코드입니다 :public int print(Graphics graphics, PageFormat pageFormat, int page) throws PrinterException {
deepCopyString = string;
FontMetrics metrics = graphics.getFontMetrics(font);
int lineHeight = metrics.getHeight();
arrangePage(graphics, pageFormat, metrics);
if (page > pageBreaks.length){
return NO_SUCH_PAGE;
}
Graphics2D g = (Graphics2D) graphics;
g.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
g.setFont(font);
int begin = (page == 0) ? 0 : pageBreaks[page-1];
int end = (page == pageBreaks.length) ? lines.length : pageBreaks[page];
int y = 0;
int x = 0;
for (int line = begin; line < end; line++){
x = 0;
y += lineHeight;
checkSyntax(line);
String l = lines[line];
for (int c = 0; c < l.length(); c++){
applySyntax(c, line);
metrics = graphics.getFontMetrics(font);
String ch = Character.toString(l.charAt(c));
g.setFont(font);
g.drawString(ch, x, y);
x += metrics.charWidth(l.charAt(c));
//System.out.println(c + "/"+l.length());
}
//g.drawString(lines[line], 0, y);
}
reset();
records.add(g);
return PAGE_EXISTS;
}
이미 내가 다른 구성 요소를 그릴 수 있도록 그래픽 오브젝트가 기록 된 것을 볼 수 있지만 것으로 오히려 쓸모 보는입니다 계속해서 레코드를 완성하기 전에 프린터로 보내십시오.
이것은 일반적으로 좋지 않은 아이디어 일 수 있으며 인쇄하기가 상당히 쉽습니다. 이 문제가 심각하게 악화되는 경우, 더 나은 방법을 설명 할 수있는 출처로 안내해주십시오.
그래서 printable() 메서드를 직접 인쇄 가능한 객체에서 호출하면 실제로 프린터로 용지가 보내지지 않습니다. – Brayden
아니요, 렌더링 할 그래픽 컨텍스트를 사용합니다 - 이것은 고전적인 인쇄 미리보기 접근 방식입니다 ... – MadProgrammer
도움 주셔서 대단히 감사합니다. – Brayden