历史版本10 :Java直接调用报表打印 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1. 描述编辑
java后台定义定时打印的功能,同时又需要直接调用报表的打印的时候,由于打印机型号和纸张的不同,需要指定打印机,从而打印是否成功并设置返回值,下面详细介绍实现过程。
2. 原理编辑
2.1 定义报表运行环境
// 定义报表运行环境,才能执行报表
String envPath = "C:\\FineReport_10.0\\webapps\\webroot\\WEB-INF";
SimpleWork.checkIn(envPath);
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.TempConfigModule;
import com.fr.data.impl.Connection;
import com.fr.data.impl.JDBCDatabaseConnection;
import com.fr.data.impl.NameDatabaseConnection;
import com.fr.file.ConnectionConfig;
import com.fr.general.ModuleContext;
import com.fr.main.TemplateWorkBook;
import com.fr.print.PrintUtils;
import com.fr.report.module.EngineModule;
import com.fr.workspace.simple.SimpleWork;
import java.util.HashMap;
public class JavaPrint {
public static void main(String[] args) {
// 定义报表运行环境,才能执行报表
String envPath = "C:\\FineReport_10.0\\webapps\\webroot\\WEB-INF";
SimpleWork.checkIn(envPath);
TempConfigModule.start();
ModuleContext.startModule(EngineModule.class.getName());
JDBCDatabaseConnection connection= new JDBCDatabaseConnection();
connection.setDriver("org.sqlite.JDBC");
String url = "jdbc:sqlite://".concat(envPath.concat("/../").concat("help/FRDemo.db"));
connection.setURL(url);
ConnectionConfig.getInstance().addConnection("FRDemo", connection);
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 {
ModuleContext.stopModules();
TempConfigModule.stop();
}
}
}
编辑进行打印
编译该程序,弹出打印机设置窗口,选择打印机就可以进行打印了,并在后台返回结果:成功!返回true。
4. 移动端编辑
移动端不支持各种打印和导出方式