0

当我尝试在我当前的大学项目中为特定标签打印机打印某些东西时,我遇到了这个错误:

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 获取可成像宽度。我显然在这里遗漏了一些东西。

4

2 回答 2

5

我解决它添加

    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();

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


        job.print( aset);
于 2012-12-28T12:53:52.787 回答
1

我对 Dymo 420P 也有同样的问题。

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

于 2012-09-15T16:47:04.840 回答