无法以正确的分辨率打印

时间:2011-05-04 08:40:56

标签: java scala printing xhtmlrenderer

我正在尝试使用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,但似乎没有任何影响。

顺便说一句:我正在尝试在Mac OS X上的Brother QL-560上打印。我能够以相同的尺寸打印相同的图像,质量非常好。

更新:添加了图片示例。Difference between print from Mac Preview and java print api

更新:使用xhtmlrenderer创建pdf,然后通过pdf-renderer(http://java.net/projects/pdf-renderer/)进行打印。印刷品现在很完美。

1 个答案:

答案 0 :(得分:1)

如果没有例子,很难说出问题所在。例如,您尝试打印哪个图像?它有什么分辨率?

为了确保它不是打印机驱动程序,我建议打印到PDF。这有帮助吗?

如果不是:将预览打印为PDF。那怎么样?放大后会发生什么?