UNPKG

@syncfusion/ej2-circulargauge

Version:
91 lines (90 loc) 4.28 kB
import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base'; import { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export'; /** * Represent the Pdf export for gauge * * @hidden */ var PdfExport = /** @class */ (function () { /** * Constructor for gauge * * @param {CircularGauge} control - Specfies the instance of the gauge. */ // eslint-disable-next-line function PdfExport(control) { } /** * To export the file as image/svg format * * @param {CircularGauge} gauge - Specifies the instance of Circular Gauge. * @param {ExportType} type - Specifies the type of the document. * @param {string} fileName Specfies the file name of the document. * @param {PdfPageOrientation} orientation - Specfies the orientation of the PDF document to export the gauge. * @param {boolean} allowDownload - Specfies whether to download the document or not. * @returns {Promise<string>} - Returns the promise string * @private */ PdfExport.prototype.export = function (gauge, type, fileName, orientation, allowDownload) { // eslint-disable-next-line var promise = new Promise(function (resolve, reject) { var element = createElement('canvas', { id: 'ej2-canvas', attrs: { 'width': gauge.availableSize.width.toString(), 'height': gauge.availableSize.height.toString() } }); orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation; var exportElement = gauge.svgObject.cloneNode(true); var backgroundElement = exportElement.childNodes[0]; var backgroundColor = backgroundElement.getAttribute('fill'); if ((gauge.theme === 'Tailwind' || gauge.theme === 'Tailwind3' || gauge.theme === 'Bootstrap5' || gauge.theme === 'Fluent' || gauge.theme === 'Material3' || gauge.theme === 'Fluent2') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) { exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)'); } else if ((gauge.theme === 'TailwindDark' || gauge.theme === 'Tailwind3Dark' || gauge.theme === 'Bootstrap5Dark' || gauge.theme === 'FluentDark' || gauge.theme === 'Material3Dark' || gauge.theme === 'Fluent2Dark' || gauge.theme === 'Fluent2HighContrast') && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) { exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)'); } var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' })); var image = new Image(); var context = element.getContext('2d'); image.onload = (function () { context.drawImage(image, 0, 0); window.URL.revokeObjectURL(url); var document = new PdfDocument(); var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream'); document.pageSettings.orientation = orientation; imageString = imageString.slice(imageString.indexOf(',') + 1); document.pages.add().graphics. drawImage(new PdfBitmap(imageString), 0, 0, gauge.availableSize.width, gauge.availableSize.height); if (allowDownload) { document.save(fileName + '.pdf'); document.destroy(); } else { resolve(null); } }); image.src = url; }); return promise; }; PdfExport.prototype.getModuleName = function () { // Returns te module name return 'PdfExport'; }; /** * To destroy the PdfExport. * * @returns {void} * @private */ // eslint-disable-next-line @typescript-eslint/no-empty-function PdfExport.prototype.destroy = function () { }; return PdfExport; }()); export { PdfExport };