2011-05-04 8 views
2

xhtmlrenderer 및 java 인쇄를 사용하여 레이블을 인쇄하려고합니다. 그러나 나는 이미지가 모든 초초 인쇄되도록 올바른 해상도를 설정할 수있을 것 같지 않습니다. 이것은 내 인쇄 코드 :올바른 해상도로 인쇄 할 수 없습니다.

val paperWidth = 62.0f 
val paperHeight = 70.0f 
def print(printable: Printable) { 
    val printJob = PrinterJob.getPrinterJob 
    printJob.setPrintService(printService) 

    val pageFormat = printJob.defaultPage 
    pageFormat.setOrientation(PageFormat.LANDSCAPE) 
    val labelPaper = pageFormat.getPaper 
    labelPaper.setImageableArea(mm2points(0f), mm2points(0f), mm2points(paperWidth), mm2points(paperHeight)) 
    labelPaper.setSize(mm2points(paperWidth), mm2points(paperHeight)) 
    pageFormat.setPaper(labelPaper) 

    val book = new Book 
    book.append(printable, pageFormat) 
    printJob.setPageable(book) 

    val attributeSet = new HashPrintRequestAttributeSet 
    attributeSet.add(new PrinterResolution(300, 300, ResolutionSyntax.DPI)) 
    printJob.print(attributeSet) 
} 

... 그리고 이것은 우리 세대 코드 :

def apply(url:URL):Printable = { 
    val renderer = new XHTMLPanel(UserAgent) 
    renderer.getSharedContext.setDPI(300f) 
    renderer.getSharedContext.setUserAgentCallback(UserAgent) 
    renderer.getSharedContext.setCss(new StyleReference(UserAgent)) 
    renderer.setDocument(url.toExternalForm) 
    new XHTMLPrintable(renderer) 
} 

내가 손해를보고있어 여기에 실종 무슨. xhtmlrenderer 소스 및 프린터 대상 모두에서 dpi를 설정하려고 시도하지만 아무 것도 영향을 미치지 않는 것 같습니다.

BTW : Mac OS X의 Brother QL-560에서 인쇄하려고합니다. 같은 크기의 미리보기에서 동일한 이미지를 매우 좋은 품질로 인쇄 할 수 있습니다.

업데이트 : 이미지 예제가 추가되었습니다. Difference between print from Mac Preview and java print api

업데이트 : PDF 렌더러 (http://java.net/projects/pdf-renderer/)를 통해 트릭을 않았다 인쇄 후 PDF를 만들 xhtmlrenderer를 사용합니다. 이제 인쇄가 완벽합니다.

답변

1

예제없이 문제가 무엇인지 말하기가 어렵습니다. 예를 들어, 어떤 이미지를 인쇄하려고합니까? 어떤 해상도가 있습니까?

프린터 드라이버가 아닌지 확인하려면 PDF로 인쇄하는 것이 좋습니다. 그게 도움이 되니?

그렇지 않은 경우 : 미리보기를 PDF로 인쇄하십시오. 어떻게 보이나요? 확대하면 어떻게됩니까?

+0

위의 이미지에있는 두 개의 인쇄물은 주목할만한 차이점이있는 동일한 이미지 (Java 인쇄물에서는 첫 번째, Mac Preview에서는 두 번째 이미지)를 사용합니다. 또한 일반 레이저 프린터로 인쇄하면 같은 문제가 발생합니다. 그게 이상하게 행동하는 xhtmlrenderer를 믿게합니다. 아직 PDF로 인쇄하지 못했습니다. – thoredge

+0

더 낮은 인쇄물은 벡터 이미지 (픽셀 이미지가 아님)처럼 보입니다. 어떻게 그걸 만들었 니? –

+0

실제로 프린터가 매우 효율적으로 사용할 수있는 것으로 보이는 341x108 해상도 (앤티 앨리어싱 사용)의 이미지입니다. – thoredge

관련 문제