2012-07-18 12 views
13

से जैस्पर रिपोर्ट पीडीएफ फॉर्म बनाएं जेआरबीन कोलेक्शनडेटासोर्स का उपयोग करके जैस्पर रिपोर्ट (पीडीएफ, एक्सेल, सीएसवी) बनाते समय यह ठीक है। इसका मतलब है कि .jrxml फ़ाइल रिपोर्ट को संसाधित करने के लिए इनपुट के रूप में pojo के संग्रह को स्वीकार करती है।जेएसओआर ऑब्जेक्ट या जेएसओएन स्ट्रिंग

अब, मैं जेस्पर रिपोर्ट को उसी .jrxml के साथ बनाने का प्रयास कर रहा हूं लेकिन JSON ऑब्जेक्ट से। मैं निम्नलिखित कोशिश की, लेकिन सभी मूल्यों पीडीएफ रिपोर्ट

Resource resource = new ClassPathXmlApplicationContext().getResource("classpath:reports/project.jrxml"); 
JsonDataSource ds = new JsonDataSource(new File("c:\myjson.json")); 
jasperDesign = JRXmlLoader.load(resource.getInputStream()); 
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); 
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, ds); 
JasperExportManager.exportReportToPdfFile(jasperPrint, destination+fileName+".pdf"); 

किसी भी एक मेरी मदद कर सकते में अशक्त कर रहे हैं?

+0

क्या आपने कभी यह काम किया है? मैं अब वही बात कर रहा हूं – Marianna

उत्तर

18

मैं जेएसओएन का उपयोग जेएसओआर रिपोर्ट के रूप में डेटासोर्स के रूप में करने के साथ संघर्ष कर रहा हूं और नेट पर सभ्य उदाहरणों की कमी के साथ मैंने सोचा कि मैं इसे भविष्य के संदर्भ के लिए यहां पोस्ट करूंगा।

यह उदाहरण है iReport Designer और JSON DataSource का उपयोग कैसे करें।

सबसे पहले, इनपुट JSON:

{ 
    "userName": "Evil Raat", 
    "details": { 
     "email": "[email protected]" 
    } 
} 

फिर iReport डिज़ाइनर में एक JSON डेटा स्रोत बना सकते हैं और अपनी फ़ाइल पर यह बात (उनकी चूक के रूप में सभी अन्य विवरण छोड़कर)

इसके बाद आप उपयोग कर सकते हैं

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="sample" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a894078a-929b-4aae-a1d0-46485f0f8835"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <queryString language="json"> 
     <![CDATA[]]> 
    </queryString> 
    <field name="userName" class="java.lang.String"> 
     <fieldDescription><![CDATA[userName]]></fieldDescription> 
    </field> 
    <field name="userEmail" class="java.lang.String"> 
     <fieldDescription><![CDATA[details.email]]></fieldDescription> 
    </field> 
    <title> 
     <band height="200" splitType="Stretch"> 
      <textField> 
       <reportElement uuid="3b74775b-4555-43c3-bdf2-1677145c8660" x="0" y="31" width="555" height="20"/> 
       <textElement textAlignment="Right"> 
        <font fontName="Helvetica" size="12" isBold="true"/> 
       </textElement> 
       <textFieldExpression><![CDATA[$F{userName}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement uuid="aa6cc7c8-2ca1-4f0f-92e2-c466083daba0" x="0" y="54" width="555" height="20"/> 
       <textElement textAlignment="Right"> 
        <font fontName="Helvetica" size="12" isBold="true"/> 
       </textElement> 
       <textFieldExpression><![CDATA[$F{userEmail}]]></textFieldExpression> 
      </textField> 
     </band> 
    </title> 
</jasperReport> 

नोट:: jrxml टेम्पलेट के बाद एक रिपोर्ट में उपरोक्त JSON प्रस्तुत करना आप को परिभाषित करना होगा क्षेत्र तत्वों को पहले, किसी भी इससे पहले इस्तेमाल किया जा सकता है। वे मानक डॉट नोटेशन का उपयोग कर JSON इनपुट फ़ाइल की जड़ से JSON पथ होना चाहिए। उदाहरण के लिए उपरोक्त फ़ील्ड डिस्क्रिप्शन तत्व देखें।

एक बार अपने क्षेत्र आप एक पाठ क्षेत्र में इसका परिकलित मान या जो कुछ भी उपयोग कर सकते हैं परिभाषित किया गया है:

आशा है कि कुछ लोगों में मदद करता है।

+2

ऑब्जेक्ट के सरणी के बारे में क्या। आप उन्हें कैसे संभालेंगे। विशेष रूप से विवरण बैंड में उन्हें रखने के लिए? – Yebach

+0

क्षमा करें मैंने इस पोस्ट के बाद लंबे समय तक जैस्पर रिपोर्ट्स के साथ काम करना बंद कर दिया है, इसलिए मुझे कोई जानकारी नहीं है। –

1

यह कैसे मैं Jasper में json सरणियों संभाल

चलें कहते हैं कि मैं निम्नलिखित सरणी बंद रिपोर्ट करना चाहते है।

[ 
    {"name":"Jerry", "value":"Jesus"}, 
    {"name":"Gideon", "value": "Loves"}, 
    {"name":"Eva", "value": "You"} 
] 

रिपोर्ट तैयार करते समय, सुनिश्चित करें कि आप फ़ील्ड को अपने जेसन फ़ील्ड नाम के समान नाम दें। तो डिजाइनर में मैं नाम और मान नामक दो फ़ील्ड जोड़ूंगा। आप आवश्यकतानुसार रिपोर्ट डिजाइनर को कई पैरामीटर भी जोड़ सकते हैं। इस उदाहरण के लिए, मैं जैस्पर स्टूडियो में शीर्षक नामक एक पैरामीटर जोड़ूंगा।

अब जावा कोड है जो इस परीक्षण सरणी के आधार पर जेस्पर रिपोर्ट तैयार करेगा। मैं कोड में जेसन डेटा को कड़ी मेहनत कर दूंगा, लेकिन आप फ़ाइल से लोड कर सकते हैं या जो भी आपको लगता है वह सबसे अच्छा है। मैंने यह बताने के लिए कोड पर टिप्पणी की कि क्या हो रहा है।

import net.sf.jasperreports.engine.export.JRHtmlExporterParameter; 
import net.sf.jasperreports.engine.export.JRXlsExporterParameter; 
import net.sf.jasperreports.engine.export.JRHtmlExporter; 
import net.sf.jasperreports.engine.export.JRXlsExporter; 
import net.sf.jasperreports.engine.data.JsonDataSource; 
import net.sf.jasperreports.engine.JRExporterParameter; 
import net.sf.jasperreports.engine.JasperExportManager; 
import net.sf.jasperreports.engine.JasperFillManager; 
import net.sf.jasperreports.engine.util.JRLoader; 
import net.sf.jasperreports.engine.JasperReport; 
import net.sf.jasperreports.engine.JRException; 
import net.sf.jasperreports.engine.JasperPrint; 
import org.apache.commons.codec.binary.Base64; 
import java.util.HashMap; 
import java.util.Locale; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Map; 
import java.io.*; 

//Class Name. This must match the class name you put in your build.gradle file 
public class JasperPDFExample { 
public static void main(String[] args) { 
    try { 
    try { 
    //Our json object. This can be loaded from file 
    String rawJsonData = "[{\"name\":\"Jerry\", \"value\":\"Jesus\"}," 
         + "{\"name\":\"Gideon\", \"value\": \"Loves\"}," 
         + "{\"name\":\"Eva\", \"value\": \"You\"}" 
         + "]"; 
    //Load compiled jasper report that we created on first section. 
    JasperReport report = (JasperReport) JRLoader.loadObject(new File("/home/jerry/Sample.jasper")); 
    //Convert json string to byte array. 
    ByteArrayInputStream jsonDataStream = new ByteArrayInputStream(rawJsonData.getBytes()); 
    //Create json datasource from json stream 
    JsonDataSource ds = new JsonDataSource(jsonDataStream); 
    //Create HashMap to add report parameters 
    Map parameters = new HashMap(); 
    //Add title parameter. Make sure the key is same name as what you named the parameter in jasper report. 
    parameters.put("title", "Jasper PDF Example"); 
    //Create Jasper Print object passing report, parameter json data source. 
    JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, ds); 
    //Export and save pdf to file 
    JasperExportManager.exportReportToPdfFile(jasperPrint,"/home/jerry/jasperpdfexample.pdf"); 
    } catch (JRException ex) { 
    ex.printStackTrace(); 
    throw new RuntimeException(ex); 
    } catch (Exception ex) { 
    ex.printStackTrace(); 
    throw new RuntimeException(ex); 
    } 
    } catch (Exception ex) { 
    ex.printStackTrace(); 
    throw new RuntimeException(ex); 
    } 
} 
} 

https://mis.io/pub/how-to-create-a-jasper-pdf-report-from-a-json-datasource-in-java/ के लिए धन्यवाद मैं इस Gradle निर्माण उपकरण का उपयोग कर जैस्पर के लिए जावा की स्थापना के साथ-साथ काम करने के लिए प्राप्त करने में सक्षम था।

संबंधित मुद्दे