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

1. 问题描述编辑

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

2. 实现原理编辑

2.1 定义报表运行环境
HTML/XML代码
// 定义报表运行环境,才能执行报表    
         String envPath = "D:\\FineReport\\develop\\code\\build\\package\\WebReport\\WEB-INF";    
         FRContext.setCurrentEnv(new LocalEnv(envPath));  
2.2 定义执行模板工作薄
HTML/XML代码
TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook(FRContext.getCurrentEnv(), "GettingStarted.cpt");  
2.3 获取报表参数并设置值
HTML/XML代码
// 参数传值    
             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为显示打印选项对话框,如下所示:
HTML/XML代码
// java中调用报表打印方法    
             boolean a = PrintUtils.printWorkBook("GettingStarted.cpt", paraMap, true);    
             if (a == false) {    
                 System.out.println("失败啦!返回" + a);    
             } else {    
                 System.out.println("成功!返回" + a);    
             }  
其中printWorkBook()返回值为boolean型,可通过返回值true(打印成功)和false(打印失败)来判断打印是否成功。

3. 完整代码:编辑

HTML/XML代码
package com.fr.io;      
  
import java.io.File;      
import java.util.HashMap;   
import com.fr.base.FRContext;        
import com.fr.base.Parameter;      
import com.fr.dav.LocalEnv;  
import com.fr.main.TemplateWorkBook;   
import com.fr.print.PrintUtils;    
     
    
public class JavaPrint {      
     public static void main(String[] args) {      
         // 定义报表运行环境,才能执行报表      
         String envPath = "D:\\FineReport\\develop\\code\\build\\package\\WebReport\\WEB-INF";      
         FRContext.setCurrentEnv(new LocalEnv(envPath));      
         try {      
             TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook(FRContext.getCurrentEnv(), "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 == false) {      
                 System.out.println("失败啦!返回" + a);      
             } else {      
                 System.out.println("成功!返回" + a);      
             }      
         } catch (Exception e) {      
             e.printStackTrace();      
         }      
     }      
 }  
  • 编译进行打印

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