我正在直接向打印机生成报告,但遇到了一些问题。如果我将其渲染到屏幕并打印生成的PDF,它打印正常。但是,当我直接打印时,我会遇到奇怪的保证金问题。目标是一个带有4“x3”标签的Zebra。
如果我像这样设置纸张尺寸:
MediaSizeName mediaSizeName=MediaSize.findMedia(4, 3, MediaPrintableArea.INCH);
printRequestAttributeSet.add(mediaSizeName);
结果是标签靠近上边距,左边距为半英寸(应为无),右边距约为0.25英寸,部分标签被切掉,底部边距为1.5英寸很多标签都被砍掉了。
如果我没有设置纸张尺寸,那么上边距和左边距都是完美的(意思是,没有任何边缘到标签的边缘),但我仍然以大底边距结束(切断的东西),我的右边距变得更大(在打印信息的同一点上切断)。
我在这里缺少什么?
答案 0 :(得分:4)
您可以尝试使用JasperDesign类的setBottomMargin, setTopMargin, setRightMargin, setLeftMargin
方法或JasperPrint类的相同方法。
您可以看到示例here。
您还可以在报告的模板中设置边距,例如在iReport的帮助下 报告模板的片段:
<jasperReport ... language="groovy" pageWidth="595" pageHeight="842" columnWidth="593" leftMargin="1" rightMargin="1" topMargin="1" bottomMargin="1">
您还可以查看MediaPrintableArea class constructor并阅读此post。
<强> 更新: 强>
另一种解决方法如何从this discussion删除边距:
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
Paper paper = new Paper();
paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight()); // no margin = no scaling
pf.setPaper(paper);
答案 1 :(得分:1)
呃,毕竟这是系统上的打印机首选项选项。我无法解释为什么屏幕上的PDF打印工作原理。我尝试在打印机设置中使用4&#34; x3&#34;设置自定义标签纸。大小并没有帮助我的Java应用程序,所以我认为这是我编写错误的东西。不是这样。显然,自定义标签库存的东西是行不通的。我能够深入了解高级选项并在那里设置大小,这有效......