ความก่อนเขียน java ตรงๆคราวนี้จะใช้ coldfusion ให้เรียกคลาส java เพื่อเรียกใช้ jasper reports ให้สร้างรายงานเป็น pdf
โดยใช้ Railo ซึ่งเป็น opensource coldfusion application server และ ใช้ javaloader ซึ่งเป็น library ที่ช่วยใช้ coldfusion โหลดคลาสจาวา โดยไม่ต้องเอา jar ไฟล์ไปไว้ใน coldfusion classpath และไม่จำเป็นต้อง restart server ใหม่
ตัวอย่างโค้ด
<cfscript>
// กำหนด path ของ jar ไฟล์ที่จะโหลด
paths = arrayNew(1);
paths[1] = expandPath("/jassperreports-lib/commons-digester-1.7.jar");
paths[2] = expandPath("/jassperreports-lib/jasperreports-3.7.1.jar");
paths[3] = expandPath("/jassperreports-lib/groovy-all.jar");
//create the loader
loader = createObject("component", "javaloader.JavaLoader").init(paths);
// getConnection ที่จำเป็นต้องใช้ผ่าน coldfusion datasource
datasourceService = createObject("java","coldfusion.server.ServiceFactory").getDataSourceService();
connection = datasourceService.getDatasource("qualinet").getConnection();
// hashMap ไว้เก็บค่า Property ต่างๆ ที่จะส่งไป fill ให้ jasper report
hashMap = createObject("java","java.util.HashMap").init();
hashMap.put("QUOTATION_ID",toString(url.qid));
// โหลดคลาส แต่ยังไม่ได้ทำการสร้าง instance
JasperFillManager = loader.create("net.sf.jasperreports.engine.JasperFillManager");
JasperExportManager = loader.create("net.sf.jasperreports.engine.JasperExportManager");
// โหลดแล้วสร้าง instance เลย
jrEmptyDataSource = loader.create("net.sf.jasperreports.engine.JREmptyDataSource").init();
// ทำการ fill report โดยส่ง path ของ file jasper , hashMap และ connection
jasperPrint = JasperFillManager.fillReport("/home/iporsut/railo/webapps/ROOT/example-0.6/quotation.jasper",hashMap,connection);
// export report ไปเป็นไฟล์ pdf
JasperExportManager.exportReportToPdfFile(jasperPrint,"/home/iporsut/railo/webapps/ROOT/quotation.pdf");
</cfscript>
0 Responses to “ใช้ Jasper Reports ออกรายงานเป็นไฟล์ PDF ผ่าน Railo Coldfusion”