2012-11-09 29 views
6
protected static byte[] exportReportToPdf(JasperPrint jasperPrint) 
                 throws JRException { 
    JRPdfExporter exporter = new JRPdfExporter();  
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos); 
    exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, 
       "this.print({bUI: true,bSilent: false,bShrinkToFit: true});"); 

    exporter.exportReport();   
    return baos.toByteArray(); 
} 

में पीडीएफ निर्यात मुद्रण हम एक जैस्पर एप्लिकेशन से पीडीएफ दस्तावेज़ निर्यात करने के लिए इस तरह के कोड का उपयोग कर रहे हैं।इंटरनेट एक्सप्लोरर

लाइन

exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, 
      "this.print({bUI: true,bSilent: false,bShrinkToFit: true});"); 

प्रिंटर के लिए सीधे पीडीएफ दस्तावेज़ भेजने के लिए जावास्क्रिप्ट कहते हैं।

अपेक्षित व्यवहार यह है कि एक प्रिंट संवाद पीडीएफ दस्तावेज के पूर्वावलोकन के साथ आएगा।

यह अधिकांश समय ठीक काम करता है - सिवाय इसके कि मुझे इंटरनेट एक्सप्लोरर 8 और फ़ायरफ़ॉक्स में हर 5-6 बार में से किसी एक के बारे में समस्याएं आ रही हैं।

क्या होता है - पीडीएफ दस्तावेज़ के साथ प्रिंट पूर्वावलोकन संवाद प्रकट नहीं होता है या यह पूर्वावलोकन विंडो में एक खाली दस्तावेज़ के साथ प्रकट होता है।

-I've this.print() करने के लिए विभिन्न पैरामीटर अलग JavaScripts की (एक नंबर की कोशिश की exporter.setParameter -I've के माध्यम से की कोशिश की अलग प्रतिक्रिया हेडर की स्थापना जैसे

response.setContentType("application/pdf"); 
response.setHeader("Content-disposition","inline; filename=\"" 
        + reportName 
        + "\""); 
response.setContentLength(baos.size()); 

इन मदद करने के लिए नहीं मालूम था

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

+0

क्या आप एक्रोबैट में उस दस्तावेज़ को पढ़ सकते हैं? –

+0

हां, अगर हम निर्यातक .setParameter (JRPdfExporterParameter.PDF_JAVASCRIPT, "पर टिप्पणी करते हैं। यह .print ({bUI: true, bsilent: false, bShrinkToFit: true});"); तो हम फ़ाइल को पीडीएफ अटैचमेंट के रूप में डाउनलोड करने में सक्षम हैं। यह सभी ब्राउज़रों में ठीक काम करता है। – user619804

+0

यह आरआईएफ सॉफ्टवेयर क्या है? क्या यह जैस्पर रिपोर्ट के साथ काम करता है या यह जैस्पर के लिए एक विकल्प है? – user619804

उत्तर

4

शायद इसे UI को अपडेट करने का मौका नहीं मिल रहा है। निम्नलिखित कोड प्रिंट को देरी कर सकता है शायद इसे जिस मौके की आवश्यकता है उसे दे रहा है। मैंने परीक्षण नहीं किया क्योंकि मेरे पास आपका पर्यावरण नहीं है।

exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, 
    "app.setTimeOut('this.print({bUI: true,bSilent: false,bShrinkToFit: true});',200);") 
+0

लेकिन यह जावास्क्रिप्ट पूरी तरह से पीडीएफ के लिए नहीं है? मुझे नहीं लगता कि PDF_JAVASCRIPT डोम में कुछ भी जोड़ रहा है? – user619804

+0

@ user619804, जेएस निश्चित रूप से डोम में कुछ भी नहीं जोड़ रहा है, लेकिन आपको पता नहीं है कि ब्राउजर (जो प्रतिपादन और प्रिंटिंग को नियंत्रित करता है) और एडोब प्लगइन के बीच दौड़ की स्थिति क्या हो सकती है। क्या आपने माइक के सुझाव की कोशिश की? क्या इससे कोई फर्क पड़ता है? – vladr

+0

टाइमआउट ने मदद नहीं की। – user619804

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