zoukankan      html  css  js  c++  java
  • 关于iReport报表的分页

    问题:二手车认证系统的检测报告采用iReport开发,开发者自定义了一张超级长的纸张,导致打印时自动缩放到了一张A4纸上。需要修改使之能够合理的分页打印,这是来到新公司的第一个任务。

    Image
    解决方案一:

    1、iReport报表自定义页面,需要分页的地方使用分页符进行分页
    2、生成PDF报表

    3、按照如下说明进行打印

    Image


    采用这种方式,显示出的PDF报表有大片空白,但是打印是正常的。查看PDF时每页下方大片的空白导致用户体验极差,不采用此方式。

    方案二:

    还是使用“自定义”纸张,采用“海报”方式打印,PDF会自动把一张很长的页面的内容拆分到多个A4页面上,需要仔细调整每页的内容。

    Image


    注:得用IE浏览器,360、谷歌等浏览器需要先另存到本地,然后再使用Adobe Reader自己提供的打印功能。



    教客户使用时又发现问题了,因为是使用Image开发和调试的,但是到了实际的打印机上分页效果不一样。
    方案三:

    把每一页的内容单独放到一个子报表上,然后父表去调用6个子报表。每个子表前放一个分页符。这样终于完美解决问题了。














    iReport分页打印开发调试过程中遇到的坑总结如下:

    1、如果在子表中使用 Text Field 控件直接显示参数,那么不要放在 Detail 区,显示不出来(如果也同时显示从数据库中查询出的表数据,那么 Detail 区应该能显示出来);要放在 Page Header 或者 Title 区。

    2、Field放在Detail区,也可以在 Page Header 区。

    3、报表的 When No Data 属性,选择“All Sections,No Detail”。

    4、在[窗口]-[组件面板]中可以找回组件面板。

    5、主表的数据是从Java代码中通过JSON格式传进去的,主表中定义了200来个Field,如果需要在子表中使用这些数据,那么需要在子表中定义参数,然后在主表 Subreport 控件的 Parameters 属性中对子表参数赋值。

    Image1



    菊子曰 本文用菊子曰发布
  • 相关阅读:
    2019总结及2020计划
    蓝牙BLE连接与操作
    Android蓝牙操作
    Cannot use JSX unless the '--jsx' flag is provided.
    PyQt打包可执行文件
    Springboot项目报错【java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to java.base/java.net.URLClassLoader】
    typescript枚举字符串型不能使用函数问题
    beautifulsoap常用取节点方法
    numpy常用矩阵操作
    MYSQL 碎片查询
  • 原文地址:https://www.cnblogs.com/sdsunjing/p/5019604.html
Copyright © 2011-2022 走看看