2012-08-30 3 views
2

목록이 java.awt.Image이고 각 이미지의 해상도가 300DPI입니다. 이 이미지를 인쇄하고 싶습니다.이 이미지 (javax.PrintService API 사용)를 인쇄하기 시작하면 Java의 Print/3D 클래스는 기본적으로 72DPI (이미지의 300DPI)를 사용하므로 일부 이미지 만 인쇄합니다. 그러나 72 DPI (Java 기본값과 같은 해상도)로 이미지를 사용하면 모든 이미지가 잘 인쇄됩니다 (일부 이미지뿐만 아니라 전체 이미지를 인쇄 할 때).Java. 크기 조정없이 고해상도 이미지 인쇄

질문 : 이미지의 인쇄 해상도를 인쇄 영역에 맞게 설정할 수있는 곳은 무엇입니까?

PrintRequestAttributeSet.add(new PrinterResolution(300, 300, ResolutionSyntax.DPI))으로 설정하려고했으나 아무 효과가 없습니다.

지금은 이미지를 인쇄 영역에 맞게 조정했지만 이미지 크기를 조정하면 품질이 떨어지고 인쇄 된 문서를 읽을 수 없습니다.

+1

함께 일하는 java 버전을 알려 주실 수 있습니까 – fftk4323

+0

@ fftk4323 Java 1.6 – MyTitle

+0

질문을 크게 편집하지 않으셔도됩니다. 이미 응답 한 사람들에게는 공정하지 않으며 Stack Overflow가 작동하는 방식이 아닙니다. 새로운 질문이있는 경우 새로운 질문을하십시오. –

답변

7

당신의 drawImage (이미지 IMG, INT의 DX1, INT의 DY1, INT의 DX2, INT의 DY2, INT의 SX1, INT의 SY1, INT의 SX2, INT의 SY2,의 ImageObserver 관찰자)

매개 변수 DX1, DY1, DX2 및 사용할 수 있습니다 dy2는 이미지가 들어 맞아야 할 경계를 정의합니다. 몇 가지 계산을해야합니다. 이렇게하면 좌표에 고품질 이미지가 인쇄됩니다 (축소하지 않고).

class MyPrintable implements Printable { 
    public int print(Graphics g, PageFormat pf, int pageIndex) { 
    if (pageIndex != 0) return NO_SUCH_PAGE; 

    Graphics2D g2 = (Graphics2D) g; 
    g2.printImage(....); 
    return PAGE_EXISTS; 
    } 
} 

그런 다음

PrinterJob pj = PrinterJob.getPrinterJob(); 
... 
PageFormat pf = ...; 
... 
pj.setPrintable(new MyPrintable(), pf); 

당신은 아직도 당신이 이전과 같은 해상도를 설정해야합니다.

관련 문제