历史版本14 :Java直接调用报表打印 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

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


222

4. 移动端编辑

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