UNPKG

pdfviewer

Version:

PDF Viewer using Mozila PDF JS.

65 lines (50 loc) 4.13 kB
;(function(root, factory) { 'use strict'; if (typeof module === 'object' && module.exports) module.exports = factory(); else if (typeof define === 'function' && define.amd) define([], factory); else root.PdfViewer = factory(); }(typeof window === 'object' ? window : this, function() { 'use strict'; function PdfViewer(opts) { this.pdfUrl = opts.pdfUrl || ''; this.onerror = opts.onerror || null; this.staticHost = opts.staticHost || ''; } PdfViewer.prototype.embed = function(container) { this.container = container; var html = [ '<!DOCTYPE html><html dir="ltr" mozdisallowselectionprint moznomarginboxes><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">', '<link rel="stylesheet" href="'+ this.staticHost + '/css/viewer.css"/>', '<link rel="resource" type="application/l10n" href="' + this.staticHost + '/locale/locale.properties"/>', '<script src="'+ this.staticHost + '/js/compatibility.js"></script>', '<script src="'+ this.staticHost + '/js/l10n.js"></script>', '<script src="'+ this.staticHost + '/js/pdf.js"></script>', '<script src="' + this.staticHost + '/js/viewer.js"></script>', '</head><body tabindex="1" class="loadingInProgress"><div id="outerContainer"><div id="mainContainer"><div id="loadingBar"><div class="progress"><div class="glimmer"></div></div></div><div class="toolbar"><div id="toolbarContainer"><div class="splitToolbarButton"><button id="zoomOut" class="toolbarButton zoomOut" title="Zoom Out" tabindex="21" data-l10n-id="zoom_out"><span data-l10n-id="zoom_out_label">Zoom Out</span></button><button id="zoomIn" class="toolbarButton zoomIn" title="Zoom In" tabindex="22" data-l10n-id="zoom_in"><span data-l10n-id="zoom_in_label">Zoom In</span></button><button id="print" class="toolbarButton print" title="Print" tabindex="33" data-l10n-id="print"><span data-l10n-id="print_label">Print</span></button><button id="download" class="toolbarButton download" title="Download" tabindex="34" data-l10n-id="download"><span data-l10n-id="download_label">Download</span></button></div></div></div><div id="viewerContainer" tabindex="0"><div id="viewer" class="pdfViewer"></div></div><div id="errorWrapper" hidden="true"><div id="errorMessageLeft"><span id="errorMessage"></span><button id="errorShowMore" data-l10n-id="error_more_info"> More Information </button><button id="errorShowLess" data-l10n-id="error_less_info" hidden="true"> Less Information </button></div><div id="errorMessageRight"><button id="errorClose" data-l10n-id="error_close"> Close </button></div><div class="clearBoth"></div><textarea id="errorMoreInfo" hidden="true" readonly="readonly"></textarea></div></div><div id="overlayContainer" class="hidden"><div id="passwordOverlay" class="container hidden"><div class="dialog"><div class="row"><p id="passwordText" data-l10n-id="password_label">Enter the password to open this PDF file:</p></div><div class="row"><input type="password" id="password" class="toolbarField" /></div><div class="buttonRow"><button id="passwordCancel" class="overlayButton"><span data-l10n-id="password_cancel">Cancel</span></button><button id="passwordSubmit" class="overlayButton"><span data-l10n-id="password_ok">OK</span></button></div></div></div></div></div><div id="printContainer"></div></body></html>' ].join(''); var iframe = document.createElement('iframe'); iframe.height = '100%'; iframe.width = '100%'; iframe.frameBorder = 'none'; iframe.src = ''; container.innerHTML = ''; container.appendChild(iframe); var self = this; // `container` MUST be in the DOM already var win = iframe.contentWindow; win.document.open(); win.document.write(html); win.document.close(); if (typeof self.onerror === 'function') { win.onerror = function(err) { self.onerror(err); }; } win.FILE_URL = self.pdfUrl; return this; }; PdfViewer.prototype.destroy = function() { if (this.container) { this.container.innerHTML = ''; } }; return PdfViewer; }));