java直接调用报表打印

编辑
  • 文档创建者:文档助手1
  • 浏览次数:7564次
  • 编辑次数:14次
  • 最近更新:Kevin-s 于 2019-06-21
  • 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. 完整代码

    package com.fr.io;
    import com.fr.base.Parameter;
    import com.fr.config.activator.BaseDBActivator;
    import com.fr.config.activator.ConfigurationActivator;
    import com.fr.data.impl.config.activator.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.StateServerActivator;
    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 StateServerActivator(),
                    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




    4. 移动端

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


    附件列表


    主题: 报表应用
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]