我正在生成一份直接发送给打印机的报告,但遇到了一些问题。如果我将它渲染到屏幕上并打印生成的 PDF,则打印效果很好。但是,当我直接打印时,出现奇怪的边距问题。目标是带有 4"x3"标签的斑马。
如果我这样设置纸张大小:
MediaSizeName mediaSizeName=MediaSize.findMedia(4, 3, MediaPrintableArea.INCH);
printRequestAttributeSet.add(mediaSizeName);
结果是标签靠上边距,左边距为半英寸(应该没有),右边距约为 0.25 英寸,标签的一部分被切掉,底部边缘为 1.5 英寸,很多标签被砍掉了。
如果我不设置纸张尺寸,那么上边距和左边距是完美的(意思是,没有任何边距,到标签的边缘),但我仍然得到大底边距(切掉的东西),我的右边距变大了(关于打印信息,在同一点切掉了)。
我在这里错过了什么?
最佳答案
您可以尝试使用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);
关于jasper-reports - 如何使用 JasperReports 更改打印页边距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8039495/