如何在java中将边距设置为jasper报告?

如何在java中将边距设置为jasper报告!

我有带边距的reports.jasper,但是在打印时我必须改变边距!

JasperPrint.setTopMargins(myMarginsValue)不起作用!!!

我使用JRPrintServiceExporter发送到打印机!

当前代码:

 InputStream reportStream = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/rep‌​orts/" + "myReport"+".jasper"); JasperReport template = (JasperReport) JRLoader.loadObject(reportStream); template.setWhenNoDataType(WhenNoDataTypeEnum.ALL_SECTIONS_NO_DETAIL); 

使用JRXmlLoader将jrxml (注意不是.jasper) 加载到JasperDesign中

 JasperDesign design = JRXmlLoader.load(stream); //Location of jrxml file example FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/rep‌​orts/" + "myReport"+".jrxml"); design.setBottomMargin(bottomMargin); //set the margins design.setTopMargin(topMargin) design.setLeftMargin(leftMargin) design.setRightMargin(rightMargin); design.setColumnWidth(design.getPageWidth()-leftMargin-rightMargin);//if you change your left and right margin you need to set new correct columnWidth //compile the report JasperReport report = JasperCompileManager.compileReport(design); //this is what you called template 

然后填写并根据需要导出

当然textField可能不在设计范围内,如果你将边距增加到很多,乐队可能不适合页面高度,这需要适当考虑。

如果目的是移动布局以适应预打印表单,这是另一个类似的问题: 如何移动整个布局以适应不同打印机上的预打印表单