反馈已提交

网络繁忙

Java直接调用报表打印

  • 文档创建者:文档助手1
  • 历史版本:16
  • 最近更新:RosieY 于 2021-06-28
  • 1. 概述

    Java 后台定义定时打印的功能,同时又需要直接调用报表的打印的时候,由于打印机型号和纸张的不同,需要指定打印机,从而打印是否成功并设置返回值,下面详细介绍实现过程。

    2. 原理

    2.1 定义报表运行环境

    // 首先需要定义执行所在的环境,这样才能正确读取数据库信息
            // 定义报表运行环境,用于执行报表
            Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
                    new ConfigurationActivator(),
                    new StateServerActivator(),
                    new ReportBaseActivator(),
                    new RestrictionActivator(),
                    new ReportActivator());
            String envpath;//工程路径
            envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";
            SimpleWork.checkIn(envpath);
            module.start();

    注:工程路径根据实际情况修改

    2.2 定义执行模板工作薄

    TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook("GettingStarted.cpt");

    2.3 获取报表参数并设置值

    // 参数传值
    Parameter[] parameters = workbook.getParameters();
    HashMap<String, String> paraMap = new HashMap<String, String>();
    paraMap.put(parameters[0].getName(), "华北");

    2.4 Java 中调用报表打印方法并进行判断

    通过公式 PrintUtils.printWorkBook(cptPath) 进行打印,此时不弹出打印窗口。

    若需显示打印选项对话框,则使用 PrintUtils.printWorkBook(cptPath, true),其中参数 true 为显示打印选项对话框,如下所示:

    // Java 中调用报表打印方法
    boolean a = PrintUtils.printWorkBook("GettingStarted.cpt", paraMap, true);
    if (!a) {
          System.out.println("失败啦!返回" + a);
    } else {
          System.out.println("成功!返回" + a);
    }

    其中 printWorkBook() 返回值为 boolean 型,可通过返回值 true(打印成功)和 false(打印失败)来判断打印是否成功。

    3. 完整代码

    编译前,需要先导入 FineReport 工程 JAR 包,包括安装工程包%FR_HOME%/lib下面的所有的包,%FR_HOME%/server/lib下面的所有包,%FR_HOME%/webapps/webroot/WEB-INF/lib下面的所有包,还需要引入 JDK 下 的 tools.jar。如何操作可参考:编译Java程序

    注:工程路径需要根据实际情况修改

    package com.fr.io;
    import com.fr.base.Parameter;
    import com.fr.config.activator.BaseDBActivator;
    import com.fr.config.activator.ConfigurationActivator;
    import com.fr.report.RestrictionActivator;
    import com.fr.main.TemplateWorkBook;
    import com.fr.module.Module;
    import com.fr.module.tool.ActivatorToolBox;
    import com.fr.print.PrintUtils;
    import com.fr.report.ReportActivator;
    import com.fr.report.module.ReportBaseActivator;
    import com.fr.store.StateServiceActivator;
    import com.fr.workspace.simple.SimpleWork;
    import java.util.HashMap;
    public class JavaPrint {
        public static void main(String[] args) {
            // 首先需要定义执行所在的环境,这样才能正确读取数据库信息
            // 定义报表运行环境,用于执行报表
            Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
                    new ConfigurationActivator(),
                    new StateServiceActivator(),
                    new ReportBaseActivator(),
                    new RestrictionActivator(),
                    new ReportActivator());
            String envpath;//工程路径
            envpath = "//Applications//FineReport10_325//webapps//webroot//WEB-INF";
            SimpleWork.checkIn(envpath);
            module.start();
            try {
                TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook("GettingStarted.cpt");
                // 参数传值
                Parameter[] parameters = workbook.getParameters();
                HashMap<String, String> paraMap = new HashMap<String, String>();
                paraMap.put(parameters[0].getName(), "华北");
                // java中调用报表打印方法
                boolean a = PrintUtils.printWorkBook("GettingStarted.cpt", paraMap, true);
                if (!a) {
                    System.out.println("失败啦!返回" + a);
                } else {
                    System.out.println("成功!返回" + a);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                module.stop();
            }
        }
    }

    编译进行打印。

    编译该程序,弹出打印机设置窗口,选择打印机就可以进行打印了,并在后台返回结果:成功!返回 true

    222

    4. 移动端

    移动端不支持各种打印和导出方式

    附件列表


    主题: 报表专题
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持