का उपयोग कर वेब-सेवा से लौटाई गई बाइनरी स्ट्रिंग से पीडीएफ फ़ाइल कैसे बनाएं I AJAX अनुरोध से प्रतिक्रिया के रूप में मुझे प्राप्त होने वाली बाइनरी स्ट्रीम से पीडीएफ फाइल बनाने की कोशिश कर रहा हूं।जावास्क्रिप्ट
वाया XmlHttpRequest मैं डेटा निम्नलिखित प्राप्त करते हैं: uri:
%PDF-1.4....
.....
....hole data representing the file
....
%% EOF
क्या मैं अब तक की कोशिश की, डेटा के माध्यम से अपने डेटा एम्बेड करने के लिए किया गया था।
अब, इसमें कुछ भी गलत नहीं है। यह ठीक काम करता है। दुर्भाग्यवश यह आईई 9, और एफएफ में काम नहीं करता है।
संभावित कारण यह हो सकता है कि एफएफ और आईई 9 में डेटा-यूरी के उपयोग के साथ समस्याएं हैं।
अब, मैं किसी भी समाधान की तलाश कर रहा हूं जो सभी ब्राउज़रों के लिए काम करता है।
// responseText encoding
pdfText=$.base64.decode($.trim(pdfText));
// Now pdfText contains %PDF-1.4 ...... data...... %%EOF
var winlogicalname = "detailPDF";
var winparams = 'dependent=yes,locationbar=no,scrollbars=yes,menubar=yes,'+
'resizable,screenX=50,screenY=50,width=850,height=1050';
var htmlText = '<embed width=100% height=100%'
+ ' type="application/pdf"'
+ ' src="data:application/pdf,'
+ escape(pdfText)
+ '"></embed>';
// Open PDF in new browser window
var detailWindow = window.open ("", winlogicalname, winparams);
detailWindow.document.write (htmlText);
detailWindow.document.close();
जैसा कि मैंने कहा .... यह ओपेरा और क्रोम (सफारी परीक्षण नहीं) के लिए ठीक काम करता है:
यहाँ मेरी कोड है। आईई या एफएफ का उपयोग करके एक खाली नई विंडो लाएगी।
क्या उपयोगकर्ता को इसे डाउनलोड करने के लिए फ़ाइल सिस्टम पर पीडीएफ फ़ाइल बनाने जैसे कोई समाधान है?
मुझे एक ऐसे समाधान की आवश्यकता है जो कम से कम आईई, एफएफ, ओपेरा, क्रोम और सफारी में सभी ब्राउज़रों में काम करे।
मुझे वेब-सेवा कार्यान्वयन को संपादित करने की कोई अनुमति नहीं है। इसलिए इसे क्लाइंट-साइड पर समाधान होना था।
कोई विचार ???
मुझे लगता है कि यह बेहतर हो हर कोई एक सेवा है जो करने के लिए पीडीएफ फाइलों को डाउनलोड करता है लिखने के लिए होगा एक फ़ोल्डर, वेबसर्वर स्थिर फाइलों को सेवा दें। पथ पर आधारित, फ़ाइल के लिए अपना यूआरएल बनाएं। –
@RrinivasReddyThatiparthy से सहमत। एक अस्थायी फ़ाइल में डाउनलोड करें और उपयोगकर्ता को फ़ाइल की सेवा करें। ऑब्जेक्ट और एम्बेड टैग के संयोजन का उपयोग करके निश्चित रूप से आवश्यक होने पर आप इनलाइन को प्रदर्शित कर सकते हैं - यह प्रश्न देखें: http://stackoverflow.com/questions/1244788/embed-vs-object/1244871#1244871 – mccannf
आपको इसकी आवश्यकता क्यों है जेएस के साथ डेटा पकड़ो? क्या आप स्थान = के साथ बस नई विंडो नहीं खोल सकते हैं? –
sander