@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
124 lines (120 loc) • 3.1 kB
JavaScript
//#region ../src/pdf/pako.js
(function() {
kendo.pdf = kendo.pdf || {};
kendo.pdf.supportsDeflate = function() {
return window.pako && typeof window.pako.deflate == "function";
};
kendo.pdf.deflate = function(data) {
return window.pako.deflate(data);
};
})();
//#endregion
//#region ../src/pdf/core.js
(function($) {})(window.kendo.jQuery);
//#endregion
//#region ../src/pdf/mixins.js
(function($, undefined) {
kendo.PDFMixin = {
extend: function(proto) {
proto.events.push("pdfExport");
proto.options.pdf = this.options;
proto.saveAsPDF = this.saveAsPDF;
proto._drawPDF = this._drawPDF;
proto._drawPDFShadow = this._drawPDFShadow;
},
options: {
fileName: "Export.pdf",
proxyURL: "",
paperSize: "auto",
allPages: false,
landscape: false,
margin: null,
title: null,
author: null,
subject: null,
keywords: null,
creator: "Kendo UI PDF Generator v." + kendo.version,
date: null
},
saveAsPDF: function() {
var progress = new $.Deferred();
var promise = progress.promise();
var args = { promise };
if (this.trigger("pdfExport", args)) {
return;
}
var options = this.options.pdf;
options.multiPage = options.multiPage || options.allPages;
this._drawPDF(progress).then(function(root) {
return kendo.drawing.exportPDF(root, options);
}).done(function(dataURI) {
kendo.saveAs({
dataURI,
fileName: options.fileName,
proxyURL: options.proxyURL,
forceProxy: options.forceProxy,
proxyTarget: options.proxyTarget
});
progress.resolve();
}).fail(function(err) {
progress.reject(err);
});
return promise;
},
_drawPDF: function(progress) {
var promise = new $.Deferred();
kendo.drawing.drawDOM(this.wrapper).done(function(group) {
var args = {
page: group,
pageNumber: 1,
progress: 1,
totalPages: 1
};
progress.notify(args);
promise.resolve(args.page);
}).fail(function(err) {
promise.reject(err);
});
return promise;
},
_drawPDFShadow: function(settings, drawOptions) {
settings = settings || {};
var wrapper = this.wrapper;
var shadow = $("<div class='k-pdf-export-shadow'>");
if (settings.width) {
shadow.css({
width: settings.width,
overflow: "visible"
});
}
wrapper.before(shadow);
shadow.append(settings.content || wrapper.clone(true, true));
var defer = $.Deferred();
setTimeout(function() {
var promise = kendo.drawing.drawDOM(shadow, drawOptions);
promise.always(function() {
shadow.remove();
}).then(function() {
defer.resolve.apply(defer, arguments);
}).fail(function() {
defer.reject.apply(defer, arguments);
}).progress(function() {
defer.progress.apply(defer, arguments);
});
}, 15);
return defer.promise();
}
};
})(window.kendo.jQuery);
//#endregion
//#region ../src/kendo.pdf.js
const __meta__ = {
id: "pdf",
name: "PDF export",
description: "PDF Generation framework",
mixin: true,
category: "framework",
depends: ["core", "drawing"]
};
//#endregion
export { __meta__ as t };