Posts Tagged ‘railo

25
มี.ค.
10

ใช้ Jasper Reports ออกรายงานเป็นไฟล์ PDF ผ่าน Railo Coldfusion

ความก่อนเขียน 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>