“PrinterException:Paper的可成像宽度太小”我可以看到什么是错的,但我该如何解决?

时间:2012-05-15 13:21:36

标签: java printing thermal-printer

当我尝试在我目前的大学项目中为特定标签打印机打印时,我收到此错误:

java.awt.print.PrinterException: Paper's imageable width is too small.
    at sun.print.RasterPrinterJob.printPage(Unknown Source)
    at sun.print.RasterPrinterJob.print(Unknown Source)
    at sun.print.RasterPrinterJob.print(Unknown Source)
    at Printer.print(Printer.java:91)
    at Printer.<init>(Printer.java:43)
    at VisitorDBTest.main(VisitorDBTest.java:10)

但我看不出原因。我有这个特定打印机的确切标签代码,标签宽度和高度是正确的。我将可成像尺寸设置为精确的标签尺寸(以1/72英寸为单位),然后我尝试将其设置得更小而没有运气。 当我在A4页面上打印到普通喷墨打印机时,此代码工作正常。当我尝试打印到DYMO 450标签打印机(使用不同的Paper和PageFormat对象)时,我只收到错误。 看看谷歌搜索结果,看来我几乎是历史上唯一一个得到这个错误的人。

编辑:将可成像宽度打印到屏幕后,我得到以下结果:

Paper imageable width is 196.0
PageFormat imageable width is 151.0
PrinterJob imageable width is -65.0267716535433

我的理解是,PageFormat都从Paper中获取了可成像的宽度,而PrinterJob从PageFormat中获取了可成像的宽度。 我显然在这里遗漏了一些东西。

2 个答案:

答案 0 :(得分:5)

我解决了添加

    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();

    aset.add(OrientationRequested.PORTRAIT);
    aset.add(MediaSizeName.INVOICE);


        job.print( aset);

答案 1 :(得分:1)

我和Dymo 420P有同样的问题。

尝试将可成像区域设置为与纸张和原点0,0相同的尺寸。然后在PrinterJob.printDialog()之后,使用您的网页格式调用PrinterJob.validatePage()。它将返回具有适当可成像区域的有效页面格式。