我已经看到,如果选择了Ignore Pagination,则会在JasperReports的单个页面中显示整个文档。例如,如果有5000行,则在报告中的单个页面中显示是否选择了“忽略分页”。
现在,当我们使用前端Java打印时,JasperReports引擎默认以横向或纵向打印吗?
如果我们打印该页面时选择了Ignore Pagination,是否有任何默认格式(纵向或横向)?
答案 0 :(得分:3)
纵向 方向是默认方向。它不取决于 ignorePagination 属性。
1)在 jasperreport.xsd 文件中设置为默认值。
JasperReports 6.2.0的 jasperreport.xsd 的片段版本:
<attribute name="orientation" use="optional" default="Portrait">
<annotation>
<documentation>Page printing orientation.</documentation>
</annotation>
<simpleType>
<restriction base="string">
<enumeration value="Portrait">
<annotation>
<documentation>Portrait page layout.</documentation>
</annotation>
</enumeration>
<enumeration value="Landscape">
<annotation>
<documentation>Landscape page layout.</documentation>
</annotation>
</enumeration>
</restriction>
</simpleType>
</attribute>
2)在 net.sf.jasperreports.engine.base.JRBaseReport 类中设置为默认值。
来自 JRBaseReport 类的片段( 6.2.0 。以下全部代码相同)版本:
protected OrientationEnum orientationValue = OrientationEnum.PORTRAIT;
protected WhenNoDataTypeEnum whenNoDataTypeValue = WhenNoDataTypeEnum.NO_PAGES;
protected SectionTypeEnum sectionType = SectionTypeEnum.BAND;
3)如果我们谈论导出到 xls 格式,我们可以在 net.sf.jasperreports.engine.export.JRXlsExporter 类中找到这段代码:
protected void createSheet(CutsInfo xCuts, SheetInfo sheetInfo) {
sheet = workbook.createSheet(sheetInfo.sheetName);
patriarch = sheet.createDrawingPatriarch();
HSSFPrintSetup printSetup = sheet.getPrintSetup();
printSetup.setLandscape(pageFormat.getOrientation() == OrientationEnum.LANDSCAPE);
4)如果我们谈论导出到 pdf 格式,我们可以在 net.sf.jasperreports.engine.export.JRPdfExporter 类中找到这段代码:
protected void setPageSize(JRPrintPage page) throws JRException, DocumentException, IOException {
// some piece of code is omitted
Rectangle pageSize;
switch (pageFormat.getOrientation()) {
case LANDSCAPE:
// using rotate to indicate landscape page
pageSize = new Rectangle(pageHeight, pageWidth).rotate();
break;
default:
pageSize = new Rectangle(pageWidth, pageHeight);
break;
}
document.setPageSize(pageSize);
}