2009-11-06 14 views
8

मैं जेएसपी का उपयोग कर गतिशील रिपोर्टिंग वेबपृष्ठ बनाना चाहता हूं। असल में इसमें निम्नलिखित भाग होना चाहिए:जैस्पर रीपॉर्ट्स एचटीएमएल और पीडीएफ आउटपुट

  1. फ़िल्टर: उपयोगकर्ता फ़िल्टर की स्थिति निर्दिष्ट कर सकते हैं और फ़िल्टर बटन दबा सकते हैं।
  2. एचटीएमएल-आउटपुट: फ़िल्टर का नतीजा यहां देखा जा सकता है। यह एक बड़ा HTML पृष्ठ है (या कई यदि एक पृष्ठ बहुत बड़ा होगा)। इसमें सिस्टम के अन्य हिस्सों के लिंक हो सकते हैं।
  3. पीडीएफ-आउटपुट: उपयोगकर्ता प्रिंटिंग या संग्रहण उद्देश्यों के लिए रिपोर्ट के पीडीएफ संस्करण को सहेजने में सक्षम होना चाहिए।

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

जैस्पर रिपोर्ट का एचटीएमएल एक्सपोर्ट एचटीएमएल फाइल बनाता है जिसमें बहुत सारे हार्डवार्ड कोड और काफी यादृच्छिक कॉन्फ़िगरेशन विकल्प हैं। उदाहरण के लिए यह डिफ़ॉल्ट रूप से सफेद पृष्ठभूमि के साथ एक तालिका बनाता है (<table style="... bgcolor="white" ... ">) जिसे IS_WHITE_PAGE_BACKGROUND विकल्प का उपयोग करके बंद किया जा सकता है, दूसरी तरफ cellpadding="0" cellspacing="0" border="0"table टैग में हार्डवार्ड हैं। यह भी अजीब है (और सीएसएस स्टाइल मुश्किल बनाता है) कि कक्षाओं के बजाय एचटीएमएल फाइल में मेरे सभी क्षेत्रों के लिए <span style="font-family: sansserif; color: #000000; font-size: 10.0px;"> शामिल है।

बेशक मैं जेएसपी का उपयोग कर एचटीएमएल आउटपुट को कार्यान्वित कर सकता हूं, लेकिन इसका मतलब है कि मुझे आउटपुट को दो बार डिजाइन करना होगा (एक बार जेएसपीआरएल में जेस्पर रीपॉर्ट्स के लिए जेएसपीएलएल में), और मुझे रिपोर्टिंग फ़ंक्शंस को पुन: कार्यान्वित करना होगा (जैसे उप-योग गणना, कुल गणना, समूह ...) जो DRY सिद्धांत के खिलाफ है।

इसे लागू करने के लिए सबसे अच्छा अभ्यास क्या है? JasperReports का उपयोग कर बेहतर HTML निर्यात बनाना संभव है?

उत्तर

12

अच्छा होने के लिए जेस्पर रीपॉर्ट्स के HTML आउटपुट को बदलना आसान नहीं है।

... जैसे HTML या XLS, के रूप में दस्तावेज़ स्वरूपों पाठ और ग्राफिक तत्वों की पूर्ण स्थिति का समर्थन नहीं करते: यहाँ क्यों पर एक पुराने उद्धरण है। ऐसे दस्तावेजों की सामग्री को ग्रिड या टेबल संरचना में व्यवस्थित किया गया है। बेशक, कुछ लोगों का तर्क हो सकता है एचटीएमएल में तत्वों की है कि पूर्ण पोजीशनिंग सीएसएस के लिए संभव धन्यवाद है, लेकिन आप अब तक किया जा रहा है सभी ब्राउज़रों में लागू या कि ही HTML दस्तावेज़ से सुनिश्चित करें कि सीएसएस मानक कार्यक्षमता है हो सकता है हर जगह समान दिखाई नहीं देगा।

यही कारण है कि निर्मित निर्यातकों^JasperReports कि या HTML, XLS उत्पादन सीएसवी दस्तावेजों के क्रम में एक विशेष एल्गोरिथ्म का उपयोग तत्वों एक ग्रिड के कुछ प्रकार में एक निश्चित दस्तावेज़ पृष्ठ पर मौजूद व्यवस्था करने के लिए। जब रिपोर्ट डिजाइन बहुत जटिल या समुच्चयित कर रहे हैं, पूर्ण स्थिति से ग्रिड या तालिका लेआउट तत्वों या उनके विशेष संरेखण के बीच खाली जगह के लिए यह बनाने के लिए, कई अप्रयुक्त पंक्तियों और स्तंभों के साथ बहुत जटिल तालिकाओं का उत्पादन करने के लिए गुजर ।

source

जैसा कि बताया जा यह पुरानी है, लेकिन जहाँ तक मैं बता सकता है यह अभी भी सही है।

चीजें आप एचटीएमएल निर्यातक के लिए नियंत्रित कर सकते हैं की सूची बहुत ही सीमित है:

net.sf.jasperreports.export.html.frames.as.nested.tables 
net.sf.jasperreports.export.html.remove.emtpy.space.between.rows 
net.sf.jasperreports.export.html.size.unit 
net.sf.jasperreports.export.html.using.images.to.align 
net.sf.jasperreports.export.html.white.page.background 
net.sf.jasperreports.export.html.wrap.break.word 
net.sf.jasperreports.export.{format}.exclude.origin.{suffix}.{arbitrary_name} 
net.sf.jasperreports.export.{format}.exclude.origin.keep.first.{suffix}.{arbitrary_name} 

documentation here

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

$(document).ready(function() { 
    $('span').removeAttr('style'); 
}); 
+1

मैं आज इस पोस्ट के पार आया, मैं एचटीएमएल उपयोग कर रहा हूँ और मैं इस अवधि उत्पन्न हो रही है दूर करने के लिए की जरूरत है। जैसा कि आपने अपने उत्तर में उल्लेख किया है, मैंने jQuery का उपयोग करके समझा। मेरा सवाल यह है कि इस कोड को लिखना और इसे मेरी रिपोर्ट में कैसे एकीकृत करना है? कृपया मेरा मार्गदर्शन करें –

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