javascript - Pdf.js and viewer.js. Pass a stream or blob to the viewer -
i'm having troubles in finding solution this: retrieve pdf blob sql filestream field using javascript in way (it's lightswitch project)
var blob = new blob([screen.webreportspdffilesstream.selecteditem.pdf], { type: "application/pdf;base64" });
i have blob , can convert in filestream or base64("jvberi0....." or "%pdf 1.6 ......", etc.)
no problem far.
now need display in viewer. prefer viewer open in new window i'm open embed page somehow.
i'm wondering if can directly pass blob or stream viewer , display document. i've tried like
pdfview.open(pdfasarray, 0)
nothing happens in embedded viewer in case.
the pdfasarray
since can display appending stream canvas within same page. want display viewer, not embed pdf in canvas, possibly in new window.
can provide few lines of code on how achieve in javascript?
i'm using pdfjs.version = '1.0.1040'; pdfjs.build = '997096f';
the code worked me base64 pdf data loaded this:
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); (var = 0; < raw.length; i++) { uint8array[i] = raw.charcodeat(i); } return uint8array; } }
this function success function of api call promise. i'm doing here rendering pdf onto canvas element mycanvas
.
<canvas id="mycanvas"></canvas>
this shows first page of pdf has no functionality. can see why viewer desirable. if hooked viewer (viewer.html / viewer.js) edit answer.
edit: how hook viewer
1 in bower.json
, add "pdfjs-viewer": "1.0.1040"
2 html:
<iframe id="pdfviewer" src="lib/pdfjs-viewer/web/viewer.html" style="width: 100%; height: 700px;" allowfullscreen="" webkitallowfullscreen=""></iframe>
3 change stupid default document in viewer.js
file:
var default_url = '';
4 controller:
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); (var = 0; < raw.length; i++) { uint8array[i] = raw.charcodeat(i); } return uint8array; }
Comments
Post a Comment