我正在生成一份直接发送给打印机的报告,但遇到了一些问题。如果我将它渲染到屏幕上并打印生成的PDF,它打印得很好。然而,当我直接打印时,我会遇到奇怪的边距问题。目标是一辆带有4个“x3”标签的斑马。
如果我这样设置纸张大小:
MediaSizeName mediaSizeName=MediaSize.findMedia(4, 3, MediaPrintableArea.INCH);
printRequestAttributeSet.add(mediaSizeName);结果是标签在上边距上,左边距有半英寸(应该是无),右边距大约是.25“去掉了标签的一部分,底部大理石是1.5”,很多标签都被砍掉了。
如果我没有设置纸张大小,那么上边距和左边距都是完美的(意思是,没有任何边距,位于标签的边缘),但我最终仍然会得到较大的下边距(被切掉的东西),而我的右边距变得更大(与打印信息在同一点上被切掉)。
这里我漏掉了什么?
发布于 2011-11-08 03:16:27
呃,在这一切之后,它变成了系统上的打印机首选项选项。我无法解释为什么从屏幕打印PDF文件是可行的。我尝试在打印机设置中设置一个自定义标签库存,大小为4"x3“,但这对我的Java应用程序没有帮助,所以我认为这是我编码错误的原因。事实并非如此。显然,定制标签库存的事情就是不能正常工作。我能够深入研究高级选项并在那里设置大小,这很有效……
发布于 2011-11-08 00:48:44
您可以尝试使用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);https://stackoverflow.com/questions/8039495
复制相似问题