2010-12-20 24 views
15

मैं अपनी सामग्री को पुनर्प्राप्त करने के लिए अजाक्स कार्यक्षमता का उपयोग कर रहा हूं और मुझे jQuery.ajax() की सफलता पर पीडीएफ निर्यात करने की आवश्यकता है। मैं उसे कैसे कर सकता हूँ?क्या jQuery का उपयोग करके पीडीएफ उत्पन्न करना संभव है?

उत्तर

13

jQuery नहीं कर सकता (क्योंकि जावास्क्रिप्ट नहीं कर सकता) डेटा से पीडीएफ बना सकता है, नहीं ... यह आपके सर्वर से (किसी भी अन्य अनुरोध की तरह) प्राप्त कर सकता है, लेकिन यह एक उत्पन्न नहीं कर सकता है। जावास्क्रिप्ट में क्रॉस-ब्राउजर, विशेष रूप से एक बाइनरी फ़ाइल काम करने वाली फ़ाइल बनाने/सहेजने के लिए बस एक तंत्र नहीं है (हालांकि अब कुछ HTML5 विकल्प लागू किए जा रहे हैं)।

+10

हाँ, यह संभव है के साथ एक पीडीएफ उत्पन्न करने के लिए जावास्क्रिप्ट ... http: // stackoverflow।कॉम/प्रश्न/742271/जनरेटिंग-पीडीएफ-फाइल-साथ-जावास्क्रिप्ट –

+1

@YuriKolovsky - यह सभी ब्राउज़रों में काम नहीं करता है, यह डेटा यूआरआई (और प्लगइन की आवश्यकता हो सकती है) का उपयोग कर रहा है, उपर्युक्त उत्तर अभी भी सत्य है: "जावास्क्रिप्ट बस फ़ाइल को बनाने/सहेजने के लिए कोई तंत्र नहीं है ** जो क्रॉस-ब्राउजर काम करता है ** " –

+1

मुझे ** क्रॉस-ब्राउज़र ** –

4

यदि संभव हो तो सर्वर-पक्ष पीडीएफ उत्पन्न करने के लिए बेहतर विकल्प है। यह शायद अधिकांश उपयोगकर्ताओं के लिए तेज़ होने जा रहा है और मानक HTTP अनुरोध के माध्यम से फ़ाइल लौटने के लिए मौजूदा क्लाइंट-साइड विकल्पों की तुलना में अधिक मजबूत है।

कहा कि, इस पुस्तकालय क्लाइंट-साइड पर एक पीडीएफ उत्पन्न करेगा: http://snapshotmedia.co.uk/blog/jspdf

ब्राउज़रों कि डेटा यूआरआई समर्थन में, यह पीडीएफ सीधे लौट सकते हैं। अन्य ब्राउज़रों में, आप इसे एक फ्लैश घटक के साथ जोड़ सकते हैं जिसे इसे पूरा करने के लिए डाउनलोडिफ़ी कहा जाता है।

4

यदि आप अपने AJAX सफलता में अपने सर्वर से पीडीएफ डेटा पुनर्प्राप्त कर रहे हैं और इसे डाउनलोड करने के रूप में अपने उपयोगकर्ता को आउटपुट करने की आवश्यकता है, तो इसे बेस 64 एन्कोडिंग के एक छोटे से बिट के साथ पूरा किया जा सकता है। अगर मैं सही ढंग से समझता हूं, तो संभवतः आपके पास एक परिदृश्य है जहां आपका सर्वर सफलतापूर्वक पीडीएफ या सफलता पर कुछ अन्य डेटा प्रकार लौटा रहा है (जैसे एक्सएमएल)। इस मामले में, आपके पास अनुरोध को संभालने के लिए दो चरण हैं:

1) सामग्री के प्रकार को उसके शीर्षलेख के माध्यम से निर्धारित करें।)

$.ajax({ 

    type: "POST", url: "/test", data: someData, success: function(response, status, xhr){ 
    var ct = xhr.getResponseHeader("content-type") || ""; 
    if (ct.indexOf(‘xml’) > -1) { 
     // handle xml here 
    } 
    if (ct.indexOf(‘pdf’) > -1) { 
     // handle pdf here 
    }  
    } 
}); 

2 बार जब आप अपने पीडीएफ सामग्री है, तो आप ब्राउज़र अनुप्रेषित एक बेस 64 डेटा चाल का उपयोग करके पीडीएफ को दिखाने के लिए कर सकते हैं: यहाँ प्रतिक्रिया के आधार पर अपने हैंडलर बंटवारे का एक उदाहरण है। सबसे पहले, बेस 64 में डेटा सामग्री एन्कोड करें। जावास्क्रिप्ट में ऐसा करने में आपकी सहायता के लिए number of libraries हैं। फिर, document.location.href के माध्यम से अपनी सामग्री वापस करें:

document.location.href = 'data:application/pdf;base64,' + base64PDFData; 

आपको जो चाहिए वह प्राप्त करना चाहिए। आप सैद्धांतिक रूप से किसी भी सामग्री-प्रकार को इस विधि में ब्राउज़र में अग्रेषित कर सकते हैं।

संपादित:

मुझे लगता है कि डेटा uri दुर्भाग्य से आईई due to security restrictions में काम नहीं करेगा उल्लेख करना चाहिए।

1

यदि आप जिस HTML से बात कर रहे हैं वह एक तालिका है, तो आप पीडीएफ उत्पन्न करने के लिए tableTools के साथ jquery.dataTables प्लग का उपयोग कर सकते हैं। यह दृश्यों के पीछे फ्लैश का उपयोग करता है और फ़ॉर्मेटिंग पर गंभीर रूप से सीमित है, लेकिन यह पीडीएफ उत्पन्न करता है।

http://datatables.net/extras/tabletools/

2

का उपयोग कर सकते हैं अपने स्क्रिप्ट को यह करें:

<script src="https://docraptor.com/docraptor-1.0.0.js"></script> 
DocRaptor.createAndDownloadDoc("YOUR_API_KEY_HERE", { 
    test: false, // test documents are free, but watermarked 
    type: "pdf", 
    name: planStatus+"_" +assessmentYear+"_"+employeeId+ ".pdf", 
    document_content: document.querySelector('#MyDoc').innerHTML, // use this page's HTML 
    // document_content: "<h1>Hello world!</h1>",    // or supply HTML directly 
    // document_url: "http://example.com/your-page",   // or use a URL 
    // javascript: true,          // enable JavaScript processing 
    // prince_options: { 
    // media: "screen",          // use screen styles instead of print styles 
    // } 
}) 
+0

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

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

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