दिलचस्प पोस्ट
जेपीए और बीन मान्यकरण के साथ अद्वितीय बाधा डेटाबेस, तालिका और स्तंभ नामकरण सम्मेलनों? स्थान उपयोगकर्ता छवि त्रुटि के लिए फोरस्केअर एपीआई संपत्ति पर निर्भर करते हुए डब्ल्यूपीएफ डाटाग्रिड कॉलम छिपाएंगे COM इंटरॉप के लिए सामान्य संग्रह के विकल्प क्या हैं? एन्क्रिप्ट और एमडी 5 डिक्रिप्ट ट्रिगर एचटीएमएल 5 फॉर्म वैधीकरण कोशिश / पकड़ बनाम अपवाद फेंकता पैरामीटर की व्याख्या जब नौकरियां चलती है वैश्विक माउस ईवेंट हैंडलर सी में एक पाश में strtok () का उपयोग करना? यूनिवर्सल विंडोज प्लेटफॉर्म (यूडब्ल्यूपी) ऐप का उपयोग करके प्रक्रिया कमांड (या समान) कैसे निष्पादित करें? स्काला में `: _ *` (कोलन अंडरस्कोर स्टार) क्या करता है? क्या करता है .for.Aach.call () जावास्क्रिप्ट में करते हैं? ऑब्जेक्ट को दशमलव में कास्ट करें? (नल योग्य दशमलव)

पीडीएफ। जेएस: यूआरएल के बजाए एक बेस 64 फाइल स्रोत का उपयोग कर एक पीडीएफ फाइल का प्रतिपादन

मैं pdf.js के साथ एक पीडीएफ से एक पृष्ठ को प्रस्तुत करने की कोशिश कर रहा हूँ

आम तौर पर, यूआरएल का उपयोग करते हुए, मैं यह कर सकता हूँ:

PDFJS.getDocument("http://www.server.com/file.pdf").then(function getPdfHelloWorld(pdf) { // // Fetch the first page // pdf.getPage(1).then(function getPageHelloWorld(page) { var scale = 1.5; var viewport = page.getViewport(scale); // // Prepare canvas using PDF page dimensions // var canvas = document.getElementById('the-canvas'); var context = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; // // Render PDF page into canvas context // page.render({canvasContext: context, viewport: viewport}); }); }); 

लेकिन इस मामले में, मेरे पास यूआरएल की बजाय बेस 64 में फाइल है:

 data:application/pdf;base64,JVBERi0xLjUKJdDUxdgKNSAwIG9iaiA8PAovTGVuZ3RoIDE2NjUgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjarVhLc9s2... 

यह कैसे किया जा सकता है?

Solutions Collecting From Web of "पीडीएफ। जेएस: यूआरएल के बजाए एक बेस 64 फाइल स्रोत का उपयोग कर एक पीडीएफ फाइल का प्रतिपादन"

http://mozilla.github.com/pdf.js/build/pdf.js पर स्रोत कोड से

 /** * This is the main entry point for loading a PDF and interacting with it. * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR) * is used, which means it must follow the same origin rules that any XHR does * eg No cross domain requests without CORS. * * @param {string|TypedAray|object} source Can be an url to where a PDF is * located, a typed array (Uint8Array) already populated with data or * and parameter object with the following possible fields: * - url - The URL of the PDF. * - data - A typed array with PDF data. * - httpHeaders - Basic authentication headers. * - password - For decrypting password-protected PDFs. * * @return {Promise} A promise that is resolved with {PDFDocumentProxy} object. */ 

इसलिए दस्तावेज़ को पुनर्प्राप्त करने के लिए एक मानक XMLHttpRequest (XHR) का उपयोग किया जाता है। इस के साथ समस्या यह है कि XMLHttpRequests डेटा का समर्थन नहीं करते हैं: यूआरआई (उदाहरण डेटा: आवेदन / पीडीएफ; बेस 64, जेवीबीआरआई0 एक्सएलजेयूके …)।

लेकिन समारोह में टाइप किए गए जावास्क्रिप्ट अर्रे को पारित करने की संभावना है। आपको केवल एक चीज की जरूरत है, base64 स्ट्रिंग को यूआईटी 8 एरे में कनवर्ट करना। आप https://gist.github.com/1032746 पर मिले इस फ़ंक्शन का उपयोग कर सकते हैं

 var BASE64_MARKER = ';base64,'; function convertDataURIToBinary(dataURI) { var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length; var base64 = dataURI.substring(base64Index); var raw = window.atob(base64); var rawLength = raw.length; var array = new Uint8Array(new ArrayBuffer(rawLength)); for(var i = 0; i < rawLength; i++) { array[i] = raw.charCodeAt(i); } return array; } 

tl; डॉ

 var pdfAsDataUri = "data:application/pdf;base64,JVBERi0xLjUK..."; // shortened var pdfAsArray = convertDataURIToBinary(pdfAsDataUri); PDFJS.getDocument(pdfAsArray) 

IE के लिए जांच करने के लिए स्वीकार किए गए उत्तर का उपयोग किया गया था और डेटायूआरआई को UInt8Array में परिवर्तित करना; PDFJS द्वारा स्वीकृत फॉर्म

  Ext.isIE ? pdfAsDataUri = me.convertDataURIToBinary(pdfAsDataUri): ''; convertDataURIToBinary: function(dataURI) { var BASE64_MARKER = ';base64,', base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length, base64 = dataURI.substring(base64Index), raw = window.atob(base64), rawLength = raw.length, array = new Uint8Array(new ArrayBuffer(rawLength)); for (var i = 0; i < rawLength; i++) { array[i] = raw.charCodeAt(i); } return array; },