दिलचस्प पोस्ट
HTTP प्रतिक्रिया भेजने के बाद php प्रसंस्करण जारी रखें एक्सल वर्कशीट से एसक्यूएल सम्मिलित स्क्रिप्ट जेनरेट करें कन्स्ट्रक्टर में C ++ ऑब्जेक्ट सदस्य चर को कैसे प्रारंभ कर सकता हूं? एनोटेशन का उपयोग करके आप हाइबरनेट में एक "मानचित्र" कैसे मैप कर सकते हैं? आईओएस ऑटोलायआउट – फ़्रेम आकार चौड़ाई प्राप्त करें कंपास सहित एंड्रॉइड फोन अभिविन्यास का अवलोकन तत्व को पुनर्प्राप्त कैसे करें जहां एक संदर्भ मेनू निष्पादित किया गया है डिवाइस के समन्वय प्रणाली से परिपूर्ण समन्वय प्रणाली में त्वरण मैं पृष्ठ के पूर्ण यूआरएल को कैसे प्राप्त करूं, जिसमें मैं सी # पर हूँ PHP में एचएसवी से आरजीबी मूल डीजेएओ व्यवस्थापक टेम्पलेट कैसे ओवरराइड और विस्तारित करें? ब्राउज़र कुकी डोमेन कैसे काम करते हैं? एरिक Lippert चुनौती "अल्पविराम quibbling", सबसे अच्छा जवाब? संदर्भ द्वारा आइटम लौटने वाले इटरेटर, आजीवन मुद्दा जावा में स्थिर वैरिएबल के उत्तराधिकारी को निर्धारित करने वाले नियम क्या हैं?

पीडीएफ.जेएस और दर्शक। जेएस दर्शक को एक स्ट्रीम या ब्लॉब पास करें

मुझे इसके लिए एक समाधान खोजने में परेशानी हो रही है: मैं इस तरह जावास्क्रिप्ट का उपयोग करते हुए एसक्यूएल फिस्ट्रीम क्षेत्र से एक पीडीएफ ब्लॉब प्राप्त करता हूं (यह एक रोशनी परियोजना है)

var blob = new Blob([screen.WebReportsPdfFilesStream.selectedItem.Pdf], { type: "application/pdf;base64" }); 

मेरे पास ब्लॉब है और मैं इसे एक फाइलस्ट्रीम या बेस 64 ("जेवीबेरिया ….." या "% पीडीएफ 1.6 ……" आदि) में परिवर्तित कर सकता हूं।

कोई समस्या नहीं अभी तक

अब मुझे एक दर्शक में इसे प्रदर्शित करना होगा। मैं एक नई विंडो में खोलने के लिए दर्शक को पसंद करता हूं लेकिन मैं इसे किसी भी तरह अपने पृष्ठ में एम्बेड करने के लिए खोल रहा हूँ

मैं सोच रहा हूं कि मैं सीधे दर्शक या स्ट्रीम को दर्शक को पास कर सकता हूं और दस्तावेज़ को प्रदर्शित कर सकता हूं। मैंने ऐसा कुछ करने की कोशिश की है

 PDFView.open(pdfAsArray, 0) 

इस मामले में एम्बेडेड दर्शक में कुछ भी नहीं होता है

pdfAsArray अच्छा है क्योंकि मैं इसे एक पृष्ठ पर एक कैनवास में स्ट्रीम जोड़कर प्रदर्शित कर सकता हूं। मैं सिर्फ दर्शकों को प्रदर्शित करना चाहता हूं, एक कैनवास में पीडीएफ को एम्बेड नहीं करना, संभवतः एक नई विंडो में।

क्या कोई जावास्क्रिप्ट में इसे हासिल करने के लिए कुछ लाइन कोड प्रदान कर सकता है?

Solutions Collecting From Web of "पीडीएफ.जेएस और दर्शक। जेएस दर्शक को एक स्ट्रीम या ब्लॉब पास करें"

मैं PDFJS.version = '1.0.1040'; PDFJS.build = '997096f'; का उपयोग कर रहा हूं PDFJS.version = '1.0.1040'; PDFJS.build = '997096f'; PDFJS.version = '1.0.1040'; PDFJS.build = '997096f';

जो कोड मेरे लिए बेस 64 पीडीएफ डेटा लोड करने का काम करता था वह यह था:

 function (base64Data) { var pdfData = base64ToUint8Array(base64Data); PDFJS.getDocument(pdfData).then(function (pdf) { pdf.getPage(1).then(function (page) { var scale = 1; var viewport = page.getViewport(scale); var canvas = document.getElementById('myCanvas'); var context = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; page.render({ canvasContext: context, viewport: viewport }); }); }); function base64ToUint8Array(base64) { var raw = atob(base64); var uint8Array = new Uint8Array(raw.length); for (var i = 0; i < raw.length; i++) { uint8Array[i] = raw.charCodeAt(i); } return uint8Array; } } 

यह फ़ंक्शन एपीआई कॉल वादा के सफल काम हो सकता है। मैं यहाँ क्या कर रहा हूं, कैनवास तत्व myCanvas पर पीडीएफ प्रदान कर रहा है

 <canvas id="myCanvas"></canvas> 

यह पीडीएफ के पहले पृष्ठ को दिखाता है लेकिन इसमें कोई कार्यक्षमता नहीं है मैं देख सकता हूं कि दर्शक वांछनीय क्यों है अगर मैं इसे व्यूअर (व्यूअर / व्यूअर। जेएस) के ऊपर रखता हूं, तो मैं अपना जवाब संपादित करूँगा।

संपादित करें: दर्शकों को हुक कैसे करें

1 bower.json , "pdfjs-viewer": "1.0.1040" जोड़ें "pdfjs-viewer": "1.0.1040"

2 एचटीएमएल:

 <iframe id="pdfViewer" src="lib/pdfjs-viewer/web/viewer.html" style="width: 100%; height: 700px;" allowfullscreen="" webkitallowfullscreen=""></iframe> 

3 viewer.js फ़ाइल में बेवकूफ डिफ़ॉल्ट दस्तावेज़ बदलें:

var DEFAULT_URL = '';

4 नियंत्रक:

 var pdfjsframe = document.getElementById('pdfViewer'); pdfjsframe.onload = function() { LoadPdfDocument(); }; $scope.myApiCallThatReturnsBase64PdfData.then( function(base64Data) { $scope.base64Data = base64Data; LoadPdfDocument(); }, function(failure) { //NotificationService.error(failure.Message); }); function LoadPdfDocument() { if ($scope.PdfDocumentLoaded) return; if (!$scope.base64Data) return; var pdfData = base64ToUint8Array($scope.base64Data); pdfjsframe.contentWindow.PDFViewerApplication.open(pdfData); $scope.PdfDocumentLoaded = true; } function base64ToUint8Array(base64) { var raw = atob(base64); var uint8Array = new Uint8Array(raw.length); for (var i = 0; i < raw.length; i++) { uint8Array[i] = raw.charCodeAt(i); } return uint8Array; } 

आखिरकार मैंने PDFView.open विधि का काम किया। अब अगर मैं अपने पृष्ठ में दर्शक को एम्बेड करता हूं और रोब को पहले 2 उदाहरणों में सुझाए गए कार्यों के रूप में खुले कार्य में कॉल करता हूं, तो यह काम करता है।

ऐसे लोगों के लिए जो इस तरह के समाधान की तलाश कर रहे हैं, मैं यहां कुछ लिंक्स प्रदान करता हूं:

यह मेरे लाइट्सविच में मुख्य कोड है। पृष्ठ.लॉल्लि.जेएस जेएस स्क्रिप्ट (पीडीएफ। जेएस, व्यूवर और अन्य) लाइटस्विच प्रोजेक्ट के मुख्य HTML पृष्ठ (डिफ़ॉल्ट.html) में संदर्भित हैं; मुझे लगता है कि यह किसी भी अन्य HTML पेज के साथ काम नहीं करना चाहिए, जो कि लाइटस्चच आधारित है।

 myapp.MainPage.ShowPdf_execute = function (screen) { // Write code here. // Getting the stream from sql var blob = new Blob([screen.WebReportsPdfFilesStream.selectedItem.Pdf], { type: "application/pdf;base64" }); // Pass the stream to an aspx page that makes some manipulations and returns a response var formData = new FormData(); formData.tagName = pdfName; formData.append(pdfName, blob); var xhr = new XMLHttpRequest(); var url = "../OpenPdf.aspx"; xhr.open('POST', url, false); xhr.onload = function (e) { var response = e.target.response; var pdfAsArray = convertDataURIToBinary("data:application/pdf;base64, " + response); var pdfDocument; // Use PDFJS to render a pdfDocument from pdf array PDFJS.getDocument(pdfAsArray).then(function (pdf) { pdfDocument = pdf; var url = URL.createObjectURL(blob); PDFView.load(pdfDocument, 1.5) }) }; xhr.send(formData); // multipart/form-data }; 

यह कन्वर्टडेटाइरिटिबरी फ़ंक्शन है

 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 (i = 0; i < rawLength; i++) { array[i] = raw.charCodeAt(i); } return array; } 

जो अभी भी याद किया जाता है वह संभावना है कि धारा को सीधे दर्शक को एक नई विंडो में खोलने के लिए स्ट्रीम को पास करना होगा और एक पृथक यूआई होगा जहां रेंडरिंग हो।

यह कोड अब भी काम नहीं कर रहा है क्योंकि मेरे पास कोई भी दस्तावेज़ नहीं है जिसमें कोई दस्तावेज़ नहीं है I

 var blob = new Blob([screen.WebReportsPdfFilesStream.selectedItem.Pdf], { type: "application/pdf;base64" }); var url = URL.createObjectURL(blob); var viewerUrl = 'Scripts/pdfViewer/web/viewer.html?file=' + encodeURIComponent(url); window.open(viewerUrl); 

ऐसा लगता है कि एन्कोडरआईकॉन्पेंन्ट (यूआरएल) दर्शकों को लोड करने के लिए दर्शक को लोड करने के लिए एक अच्छा ऑब्जेक्ट नहीं दे रहा है। कोई विचार या सुझाव?

यदि आपके पास एक टाइप एरे (जैसे एक Uint8Array ) है, तो फ़ाइल को PDFView.open(typedarray, 0); का उपयोग करके खोला जा सकता है PDFView.open(typedarray, 0);

यदि आपको Blob या File ऑब्जेक्ट मिल गया है, तो डेटा को टाइप करने से पहले उसे एक टाइप ऐरे में कनवर्ट करना होगा:

 var fr = new FileReader(); fr.onload = function() { var arraybuffer = this.result; var uint8array = new Uint8Array(arraybuffer); PDFView.open(uint8array, 0); }; fr.readAsArrayBuffer(blob); 

ब्लॉब / फ़ाइल ऑब्जेक्ट के लिए एक यूआरएल बनाने के लिए एक और तरीका है:

 var url = URL.createObjectURL(blob); PDFView.open(url, 0); 

अगर पीडीएफ व्यूअर की मेजबानी आपकी वेबसाइट के समान होती है जो फ्रेम को एम्बेड करती है, तो आप दर्शक को ब्लॉब यूआरएल पास करके पीडीएफ देख सकते हैं:

 var url = URL.createObjectURL(blob); var viewerUrl = 'web/viewer.html?file=' + encodeURIComponent(url); // TODO: Load the PDF.js viewer in a frame or new tab/window. 
 var url = URL.createObjectURL(blob); var viewerUrl = 'web/viewer.html?file=' + encodeURIComponent(url); // TODO: Load the PDF.js viewer in a frame or new tab/window. //-- Abobe code opens a new window but with errors : 'Missing PDF // blob://http://server-addr:port/converted-blob'