एक प्रतिशत के बिना जैस्परपोर्ट + जेडके एकीकरण

सभी को शुभ दिन। जब मैंने इस उत्कृष्ट रूपरेखा zk का अध्ययन करना शुरू किया, और यह दो साल पहले था, तब निश्चित रूप से मैं रूसी आदमियों से नहीं मिला था, तब मैं हम सब पर चढ़ा था और अब भी एक परिचयात्मक पद पाया। लेकिन वह इतना परिचयात्मक था (सम्मान के लिए कोई अपराध जो इसे लिखने के लिए परेशान नहीं था) कि उसे एक स्रोत, अपने स्वयं के मंच की ओर मुड़ना था। इसलिए, मेरा लक्ष्य रूसी-भाषा ट्यूटोरियल की उपलब्धता में इस विशाल अंतर को भरना है।

खैर, पर्याप्त प्रस्तावना, चलो शुरू हो जाओ। पद के शीर्षक के आधार पर, यह स्पष्ट है कि कथन zk के साथ जैस्पररीपोर्ट के एकीकरण के बारे में होगा, और यह कि यह एकीकरण बजट के लिए दर्द रहित होगा। चूंकि, यदि आप यहां देखते हैं , तो आप इस तरह के एक अप्रिय वाक्यांश पा सकते हैं - इस सुविधा के लिए ZK PE या EE की आवश्यकता होती है।
सीई, पीई और ईई लाइसेंस के बारे में उनकी वेबसाइट पर पढ़ा जा सकता है, और संक्षेप में, केवल सीई मुफ्त है। लेकिन अगर किसी भी एप्लिकेशन को उपयोगकर्ता को रिपोर्ट बनाने और आउटपुट करने के लिए कार्यों के कार्यान्वयन की आवश्यकता होती है, तो क्या करें। इस स्थिति से बाहर निकलने के कई तरीके हैं, पहला पीई या ईई के लिए भुगतान करना है, दूसरा यहां वर्णित किया जाएगा।

चलो दूर से शुरू करते हैं, जो कि जस्सर संकलित वर्ग के साथ है। इन उद्देश्यों के लिए, मैं सभी को iReport उत्पाद, डिजाइन, संकलन और पूर्वावलोकन रिपोर्ट के लिए एक उत्कृष्ट संपादक का उपयोग करने की सलाह देता हूं। मैं जैस्परपोर्ट में रिपोर्ट बनाने के लिए पेंट नहीं करूंगा, क्योंकि इसके लिए रूसी मदद भी बहुत हैं। नतीजतन, हमारे पास विस्तार के साथ एक संकलित रिपोर्ट होगी। महान, लेकिन अभी के लिए, चलो इसके बारे में भूल जाते हैं और एकीकरण कोड की कुछ पंक्तियाँ लिखते हैं।

सादगी के लिए, हम एक zk प्रोजेक्ट बनाएंगे और WebContent में हम बनाएंगे, निश्चित रूप से, यदि यह स्वयं उत्पन्न नहीं हुआ था, एक index.zul फ़ाइल और निम्न पंक्तियाँ लिखें:
<window title="ZK+JasperReport" border="normal" width="100%" use="ui.component.Main" id="wndMainForm"> <label value="view report" /> <toolbarbutton label="show->" onClick="wndMainForm.onShowMessage()" /> <iframe id="iframe" width="100%" height="90%"/> </window> 


विरासत में मिली कक्षा में आगे, हम पीडीएफ में रिपोर्ट बनाने के लिए प्रक्रिया लिखेंगे, और अगर सब कुछ ठीक हो गया तो हम इसे फॉर्म पर प्रदर्शित करते हैं।
 package ui.component; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.sql.Connection; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import org.zkoss.util.media.AMedia; import org.zkoss.zul.Iframe; import org.zkoss.zul.Messagebox; import org.zkoss.zul.Window; public class Main extends Window { private static final long serialVersionUID = 1L; public void onShowMessage() throws InterruptedException { try { JasperPrint print = JasperFillManager.fillReport("  /HelloWorld.jasper", null); JasperExportManager.exportReportToPdfFile(print, "  /HelloWorld.pdf"); Iframe iframe = (Iframe) this.getFellow("iframe"); File f = new File("  /HelloWorld.pdf"); byte[] buffer = new byte[(int) f.length()]; FileInputStream fs = new FileInputStream(f); fs.read(buffer); fs.close(); ByteArrayInputStream is = new ByteArrayInputStream(buffer); AMedia amedia = new AMedia("HelloWorld.pdf", "pdf", "application/pdf", is); iframe.setContent(amedia); } catch (IOException e) { Messagebox.show("   "); e.printStackTrace(); } catch (JRException e) { Messagebox.show("   pdf-"); e.printStackTrace(); } } } 

एक छोटा नोट: यदि आप संकलित कक्षा के लिए पैरामीटर और एक कनेक्शन स्ट्रिंग पास करना चाहते हैं, तो उदाहरण के लिए आप इस कोड का उपयोग कर सकते हैं:
 HashMap<String, String> hm = new HashMap<String, String>(); hm.put("dateStart", new SimpleDateFormat("HH:mm:ss").format(dbStart.getValue())); hm.put("pCommand", "\" \""); Connection conn = ;// ,     ,      JasperPrint print = JasperFillManager.fillReport("  /HelloWorld.jasper",hm,conn ); 

ठीक है, यह सब बहुत सरल और आसान है।
PS यदि आपके पास सामान्य रूप से zul मार्कअप, कोड या फ्रेमवर्क के बारे में प्रश्न हैं, तो पूछें - मैं टिप्पणियों में सभी सवालों के जवाब देने की कोशिश करूंगा
ओह, मैं लगभग भूल गया था। यहां उन सभी पुस्तकालयों की एक सूची दी गई है जिन्हें आपको इसे काम करने की आवश्यकता है:

wind.jar, sapphire.jar, silvertail.jar फाइलें खाल की होती हैं, इसलिए आपको इन्हें अपने सर्वर पर नहीं रखना होगा

Source: https://habr.com/ru/post/In128320/


All Articles