wordpress/php-fpm/wordpress_files/plugins/pdf-embedder/js/pdfemb-embed-pdf.js

98 lines
3.5 KiB
JavaScript
Raw Normal View History

2020-05-22 03:40:23 +02:00
// JQuery Plugin
jQuery(document).ready(function ($) {
$.fn.pdfEmbedder = function() {
this.each(function(index, rawAContainer) {
var divContainer;
var aContainer = $(rawAContainer);
if (aContainer.is('a')) {
// Copy 'a' to a 'div' version
var adata = aContainer.data();
divContainer = $('<div></div>', {
'class': aContainer.attr('class'),
'style': aContainer.attr('style')
});
divContainer.data($.extend({'pdf-url': aContainer.attr('href')}, adata));
aContainer.replaceWith(divContainer);
}
else {
// was a div all along
divContainer = aContainer;
}
divContainer.append($('<div></div>', {'class': 'pdfemb-loadingmsg'}).append(document.createTextNode(pdfemb_trans.objectL10n.loading)));
// Disable right click?
if (divContainer.data('disablerightclick') == 'on') {
divContainer.bind("contextmenu", function(e) {
e.preventDefault();
});
}
// Load PDF
var initPdfDoc = function(pdfDoc, showIsSecure) {
var pagesViewer = new PDFEMB_NS.pdfembPagesViewerUsable(pdfDoc, divContainer, showIsSecure);
pagesViewer.setup();
};
var callback = function(pdf, showIsSecure) {
/**
* Asynchronously downloads PDF.
*/
if (pdf === null) {
divContainer.empty().append($('<div></div>', {'class': 'pdfemb-errormsg'}).append(msgnode = $('<span></span>').append(
document.createTextNode('Failed to load and decrypt PDF'))));
return;
}
var loadingTask = pdfjsLib.getDocument(pdf);
loadingTask.promise.then(function(pdfDoc_) {
// you can now use *pdf* here
initPdfDoc(pdfDoc_, showIsSecure)
},
function(e) {
var msgnode = document.createTextNode(e.message);
if (e.name == 'UnknownErrorException' && e.message == 'Failed to fetch') {
// "Failed to fetch" - probably cross-domain issue
msgnode = $('<span></span>').append(
document.createTextNode(e.message+' '+pdfemb_trans.objectL10n.domainerror+' '))
.append($('<a href="https://wp-pdf.com/kb/error-url-to-the-pdf-file-must-be-on-exactly-the-same-domain-as-the-current-web-page/" target="_blank">'
+pdfemb_trans.objectL10n.clickhereinfo+'</a>'));
}
divContainer.empty().append($('<div></div>', {'class': 'pdfemb-errormsg'}).append(msgnode));
}
);
};
if (divContainer.data('pdfDoc')) {
initPdfDoc(divContainer.data('pdfDoc'), divContainer.data('showIsSecure'));
}
else {
var url = divContainer.data('pdf-url');
PDFEMB_NS.pdfembGetPDF(url, callback);
}
});
return this;
};
// Apply plugin to relevant divs
$('.pdfemb-viewer').pdfEmbedder();
});