all files / pivotview/actions/ pdf-export.js

98.31% Statements 406/413
88.32% Branches 484/548
100% Functions 18/18
98.31% Lines 406/413
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666   61× 61× 61× 61×   3432×   54× 34×   54× 54× 54× 54× 54×           52×       52×       54× 54× 54× 54×   54× 54×     54× 54× 54×   12×   43×     42×   4157× 4157×   4157× 28×   4157×   4157×   4157×   4157× 4157× 28× 28× 28× 28× 28× 28×   28× 28× 28×   28×     4129× 4129×   4157×   34×   34×     34× 34× 34× 34×   34× 34×   34× 34×           4123×   4123×   4123× 4123× 4123× 4123× 28×   4123× 4123× 4123× 28× 28×   4123× 4123×   4123× 4123×   35× 35× 35× 35× 35×   35× 34× 34× 34×   34× 34×     34× 34× 34× 34× 34× 34×   34×   34×           34×   34× 34× 34× 34×   34× 1556× 2896×   2896×     34× 34× 34× 54× 49×     49×       54×   54×     42× 42× 42× 42× 42× 42× 42× 42× 42× 4229× 4218× 4218×   4218× 4218× 95×   4218× 4218× 4218×     4218× 4218×   4218× 4218× 95× 95× 95×   95×     4123×   4218× 4218× 4218× 23746× 23746× 23746× 23746× 23475× 23475× 23475× 23475×     23475× 23475× 111×   23475× 23471× 23471×   23471×   35×   23471×   23471× 18913×     23475× 23475× 23475×   23475×   23475× 23475× 23475×   23475× 7317×   23475× 537×   23475× 23475× 23475×           23475× 23475× 293×           293× 293×   293× 293×   293×       23182×             23182× 23182× 23182× 23182×   23182×     23475× 95×       271× 271× 271× 271×           271× 271× 271× 271×           271× 271×   271× 271×   271× 119×   271×   271×   271× 270× 176×         173×             176×     94×   36×   58×       19×         23746× 21221× 21221× 3714× 3714× 3714× 3714×     21221× 21221×     2525× 2525×   401× 401× 401×     401×   401× 401×     23746×   4218×   4218×     42×   42×   19×   42× 42× 42×       42×           40×   42× 40× 40× 40×               20× 20× 20× 20×       17× 17×   20×       20× 20×     18×       537× 537× 537× 537× 537× 537× 537× 537× 537× 537×   93×     93×     93×   93× 93× 78×   93× 78×   93× 78×   93× 78×   93×   99× 92× 92×   99× 92× 92×   99× 92× 92×   99×   93×   99× 92× 92× 92× 92× 92× 92× 92×   92× 92× 92×   92× 92×   99×   22×     99×   22×         35× 35× 35× 34× 21× 21× 21×     19×   21× 21× 21× 21× 21× 21× 21×       13×   34×     34× 34× 34×             64× 64× 64× 64× 32×       60× 32×   60× 60× 32× 32×   60× 60×   60× 32×   60× 33×   60×          
define(["require", "exports", "@syncfusion/ej2-pdf-export", "../../common/base/constant", "@syncfusion/ej2-base", "../../base/export-util", "../../base/util", "./pdf-export-helper"], function (require, exports, ej2_pdf_export_1, events, ej2_base_1, export_util_1, util_1, pdf_export_helper_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var PDFExport = (function () {
        function PDFExport(parent) {
            this.createdDocuments = [];
            this.drawPosition = { xPosition: 0, yPosition: 0 };
            this.parent = parent;
            this.pdfExportHelper = new pdf_export_helper_1.PDFExportHelper();
        }
        PDFExport.prototype.getModuleName = function () {
            return 'pdfExport';
        };
        PDFExport.prototype.addPage = function (eventParams, pdfExportProperties) {
            if (this.createdDocuments.indexOf(eventParams.document) === -1) {
                this.createdDocuments.push(eventParams.document);
            }
            pdfExportProperties = pdfExportProperties ? pdfExportProperties : this.exportProperties.pdfExportProperties;
            var documentSection = eventParams.document.sections.add();
            var documentHeight = eventParams.document.pageSettings.height;
            var documentWidth = eventParams.document.pageSettings.width;
            if (this.exportProperties.width || this.exportProperties.height) {
                eventParams.document.pageSettings.orientation = ((this.exportProperties.width > this.exportProperties.height)
                    || (!this.exportProperties.height && (this.exportProperties.width > documentHeight)) || (!this.exportProperties.width
                    && (documentWidth > this.exportProperties.height))) ? ej2_pdf_export_1.PdfPageOrientation.Landscape : ej2_pdf_export_1.PdfPageOrientation.Portrait;
                eventParams.document.pageSettings.size = new ej2_pdf_export_1.SizeF(this.exportProperties.width ? this.exportProperties.width :
                    documentWidth, this.exportProperties.height ? this.exportProperties.height : documentHeight);
            }
            else {
                eventParams.document.pageSettings.orientation = (this.exportProperties.orientation === 0 || this.exportProperties.orientation)
                    ? this.exportProperties.orientation : (!ej2_base_1.isNullOrUndefined(pdfExportProperties) &&
                    !ej2_base_1.isNullOrUndefined(pdfExportProperties.pageOrientation)) ? (pdfExportProperties.pageOrientation === 'Landscape' ?
                    ej2_pdf_export_1.PdfPageOrientation.Landscape : ej2_pdf_export_1.PdfPageOrientation.Portrait) : ej2_pdf_export_1.PdfPageOrientation.Landscape;
                Iif (!ej2_base_1.isNullOrUndefined(pdfExportProperties) && !ej2_base_1.isNullOrUndefined(pdfExportProperties.pageSize)) {
                    eventParams.document.pageSettings.size = util_1.PivotUtil.getPageSize(pdfExportProperties.pageSize);
                }
            }
            Eif (!ej2_base_1.isNullOrUndefined(this.exportProperties.pdfMargins)) {
                var margins = eventParams.document.pageSettings.margins;
                margins.top = !ej2_base_1.isNullOrUndefined(this.exportProperties.pdfMargins.top) ? this.exportProperties.pdfMargins.top : margins.top;
                margins.bottom = !ej2_base_1.isNullOrUndefined(this.exportProperties.pdfMargins.bottom) ? this.exportProperties.pdfMargins.bottom :
                    margins.bottom;
                margins.left = !ej2_base_1.isNullOrUndefined(this.exportProperties.pdfMargins.left) ? this.exportProperties.pdfMargins.left : margins.left;
                margins.right = !ej2_base_1.isNullOrUndefined(this.exportProperties.pdfMargins.right) ? this.exportProperties.pdfMargins.right :
                    margins.right;
            }
            documentSection.setPageSettings(eventParams.document.pageSettings);
            var page = documentSection.pages.add();
            if (!ej2_base_1.isNullOrUndefined(pdfExportProperties) && !ej2_base_1.isNullOrUndefined(pdfExportProperties.header)
                && !ej2_base_1.isNullOrUndefined(this.pdfExportHelper)) {
                this.pdfExportHelper.drawHeader(pdfExportProperties, eventParams.document);
            }
            if (!ej2_base_1.isNullOrUndefined(pdfExportProperties) && !ej2_base_1.isNullOrUndefined(pdfExportProperties.footer)
                && !ej2_base_1.isNullOrUndefined(this.pdfExportHelper)) {
                this.pdfExportHelper.drawFooter(pdfExportProperties, eventParams.document);
            }
            return page;
        };
        PDFExport.prototype.getFontStyle = function (theme) {
            var fontType = ej2_pdf_export_1.PdfFontStyle.Regular;
            if (!ej2_base_1.isNullOrUndefined(theme) && theme.bold) {
                fontType |= ej2_pdf_export_1.PdfFontStyle.Bold;
            }
            if (!ej2_base_1.isNullOrUndefined(theme) && theme.italic) {
                fontType |= ej2_pdf_export_1.PdfFontStyle.Italic;
            }
            if (!ej2_base_1.isNullOrUndefined(theme) && theme.underline) {
                fontType |= ej2_pdf_export_1.PdfFontStyle.Underline;
            }
            if (!ej2_base_1.isNullOrUndefined(theme) && theme.strikeout) {
                fontType |= ej2_pdf_export_1.PdfFontStyle.Strikeout;
            }
            return fontType;
        };
        PDFExport.prototype.getBorderStyle = function (borderStyle) {
            var borders = new ej2_pdf_export_1.PdfBorders();
            if (!ej2_base_1.isNullOrUndefined(borderStyle)) {
                var borderWidth = borderStyle.width;
                var width = (!ej2_base_1.isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? borderWidth * 0.75 : undefined;
                var color = new ej2_pdf_export_1.PdfColor(196, 196, 196);
                Eif (!ej2_base_1.isNullOrUndefined(borderStyle.color)) {
                    var borderColor = this.pdfExportHelper.hexDecToRgb(borderStyle.color);
                    color = new ej2_pdf_export_1.PdfColor(borderColor.r, borderColor.g, borderColor.b);
                }
                var pen = new ej2_pdf_export_1.PdfPen(color, width);
                Eif (!ej2_base_1.isNullOrUndefined(borderStyle.dashStyle)) {
                    pen.dashStyle = this.pdfExportHelper.getDashStyle(borderStyle.dashStyle);
                }
                borders.all = pen;
            }
            else {
                var pdfColor = new ej2_pdf_export_1.PdfColor(234, 234, 234);
                borders.all = new ej2_pdf_export_1.PdfPen(pdfColor);
            }
            return borders;
        };
        PDFExport.prototype.getStyle = function () {
            var header = (!ej2_base_1.isNullOrUndefined(this.gridStyle) && !ej2_base_1.isNullOrUndefined(this.gridStyle.header))
                ? this.gridStyle.header : undefined;
            var fontFamily = (!ej2_base_1.isNullOrUndefined(header) && !ej2_base_1.isNullOrUndefined(header.fontName) &&
                !ej2_base_1.isNullOrUndefined(this.pdfExportHelper)) ? this.pdfExportHelper.getFontFamily(header.fontName) :
                ej2_pdf_export_1.PdfFontFamily.Helvetica;
            var fontStyle = !ej2_base_1.isNullOrUndefined(header) ? this.getFontStyle(header) : this.getFontStyle(undefined);
            var fontSize = (!ej2_base_1.isNullOrUndefined(header) && !ej2_base_1.isNullOrUndefined(header.fontSize)) ? (header.fontSize * 0.80) : 11;
            var pdfColor = new ej2_pdf_export_1.PdfColor();
            if (!ej2_base_1.isNullOrUndefined(header) && !ej2_base_1.isNullOrUndefined(header.fontColor)) {
                var rgb = this.pdfExportHelper.hexDecToRgb(header.fontColor);
                pdfColor = new ej2_pdf_export_1.PdfColor(rgb.r, rgb.g, rgb.b);
            }
            var font = new ej2_pdf_export_1.PdfStandardFont(fontFamily, fontSize, fontStyle);
            if (!ej2_base_1.isNullOrUndefined(header) && !ej2_base_1.isNullOrUndefined(header.font)) {
                font = header.font;
            }
            var border = !ej2_base_1.isNullOrUndefined(header) ? this.getBorderStyle(header.border) : this.getBorderStyle(undefined);
            return {
                border: border,
                font: font,
                brush: new ej2_pdf_export_1.PdfSolidBrush(pdfColor)
            };
        };
        PDFExport.prototype.setRecordThemeStyle = function (row) {
            var record = (!ej2_base_1.isNullOrUndefined(this.gridStyle) && !ej2_base_1.isNullOrUndefined(this.gridStyle.record))
                ? this.gridStyle.record : undefined;
            var fontFamily = (!ej2_base_1.isNullOrUndefined(record) && !ej2_base_1.isNullOrUndefined(record.fontName) &&
                !ej2_base_1.isNullOrUndefined(this.pdfExportHelper)) ? this.pdfExportHelper.getFontFamily(record.fontName) : ej2_pdf_export_1.PdfFontFamily.Helvetica;
            var fontSize = (!ej2_base_1.isNullOrUndefined(record) && !ej2_base_1.isNullOrUndefined(record.fontSize)) ? (record.fontSize * 0.80) : 11;
            var fontStyle = !ej2_base_1.isNullOrUndefined(record) ? this.getFontStyle(record) : this.getFontStyle(undefined);
            var font = new ej2_pdf_export_1.PdfStandardFont(fontFamily, fontSize, fontStyle);
            if (!ej2_base_1.isNullOrUndefined(record) && !ej2_base_1.isNullOrUndefined(record.font)) {
                font = record.font;
            }
            row.style.setFont(font);
            var pdfColor = new ej2_pdf_export_1.PdfColor();
            if (!ej2_base_1.isNullOrUndefined(record) && !ej2_base_1.isNullOrUndefined(record.fontColor)) {
                var rgb = this.pdfExportHelper.hexDecToRgb(record.fontColor);
                pdfColor = new ej2_pdf_export_1.PdfColor(rgb.r, rgb.g, rgb.b);
            }
            row.style.setTextBrush(new ej2_pdf_export_1.PdfSolidBrush(pdfColor));
            var borderRecord = (!ej2_base_1.isNullOrUndefined(record) && !ej2_base_1.isNullOrUndefined(record.border))
                ? this.getBorderStyle(record.border) : this.getBorderStyle(undefined);
            row.style.setBorder(borderRecord);
            return row;
        };
        PDFExport.prototype.exportToPDF = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob, currentPivotInstance) {
            var _this = this;
            var _a;
            this.parent = !ej2_base_1.isNullOrUndefined(currentPivotInstance) ? currentPivotInstance : this.parent;
            this.engine = this.parent.dataType === 'olap' ? this.parent.olapEngineModule : this.parent.engineModule;
            this.gridStyle = (!ej2_base_1.isNullOrUndefined(this.exportProperties) && !ej2_base_1.isNullOrUndefined(this.exportProperties.pdfExportProperties)) ?
                this.exportProperties.pdfExportProperties.theme : undefined;
            var eventParams = this.applyEvent();
            var result;
            var appendPageDrawCount = 0;
            if (!ej2_base_1.isNullOrUndefined(pdfDoc)) {
                eventParams.document = pdfDoc['document'];
            }
            var headerStyle = this.getStyle();
            var fileName = !ej2_base_1.isNullOrUndefined(this.exportProperties) && !ej2_base_1.isNullOrUndefined(this.exportProperties.fileName) ?
                this.exportProperties.fileName : (!ej2_base_1.isNullOrUndefined(pdfExportProperties) && !ej2_base_1.isNullOrUndefined(pdfExportProperties.fileName)) ?
                pdfExportProperties.fileName : 'default';
            var indent = (this.parent.renderModule && this.parent.renderModule.maxIndent) || 5;
            var firstColumnWidth = 100 + (indent * 20);
            var dataCollIndex = 0;
            var pivotValues = eventParams.args.pivotValues[dataCollIndex];
            var isEmptyPivotTable = util_1.PivotUtil.getPivotEmptyInfo(this.parent, this.engine);
            if (isEmptyPivotTable) {
                pivotValues = util_1.PivotUtil.getEmptyPivotValues(this.parent);
            }
            var pivotFirstRow = !ej2_base_1.isNullOrUndefined(pivotValues) && !ej2_base_1.isNullOrUndefined(pivotValues[0])
                ? pivotValues[0] : undefined;
            var size = (!ej2_base_1.isNullOrUndefined(this.exportProperties) && this.exportProperties.columnSize > 0) ?
                this.exportProperties.columnSize : (!ej2_base_1.isNullOrUndefined(this.exportProperties) &&
                !ej2_base_1.isNullOrUndefined(this.exportProperties.pdfExportProperties) &&
                this.exportProperties.pdfExportProperties.allowHorizontalOverflow && !ej2_base_1.isNullOrUndefined(pivotFirstRow))
                ? pivotFirstRow.length : (!ej2_base_1.isNullOrUndefined(pivotFirstRow) && pivotFirstRow.length > 5) ? 6
                : !ej2_base_1.isNullOrUndefined(pivotFirstRow) ? pivotFirstRow.length : Math.floor((540 - firstColumnWidth) / 90) + 1;
            this.exportProperties.allowRepeatHeader =
                this.exportProperties.allowRepeatHeader === true || ej2_base_1.isNullOrUndefined(this.exportProperties.allowRepeatHeader);
            var allowRepeatHeader = this.exportProperties.allowRepeatHeader ? this.exportProperties.allowRepeatHeader : false;
            var isHeaderRepeatEligible = allowRepeatHeader && size > 1;
            var rowMaxLevel;
            if (this.parent.isTabular) {
                rowMaxLevel = this.parent.engineModule.rowMaxLevel;
                size = rowMaxLevel + 1 < size ? size : rowMaxLevel + 2;
            }
            for (var vLen = 0; isHeaderRepeatEligible && vLen < pivotValues.length; vLen++) {
                for (var vCnt = size; pivotValues[vLen] && vCnt < pivotValues[vLen].length; vCnt += size) {
                    var rowHeaderLevel = this.parent.isTabular
                        ? pivotValues[vLen].slice(0, rowMaxLevel + 1) : [pivotValues[vLen][0]];
                    (_a = pivotValues[vLen]).splice.apply(_a, [vCnt, 0].concat(rowHeaderLevel));
                }
            }
            var colLength = pivotValues && pivotValues.length > 0 ? pivotValues[0].length : 0;
            var integratedCnt = 0;
            do {
                if (!ej2_base_1.isNullOrUndefined(pdfExportProperties)) {
                    this.exportProperties.header = (!ej2_base_1.isNullOrUndefined(pdfExportProperties.header) &&
                        !ej2_base_1.isNullOrUndefined(pdfExportProperties.header.contents) && !ej2_base_1.isNullOrUndefined(pdfExportProperties.header.contents[0].value))
                        ? pdfExportProperties.header.contents[0].value : this.exportProperties.header;
                    this.exportProperties.footer = (!ej2_base_1.isNullOrUndefined(pdfExportProperties.footer) &&
                        !ej2_base_1.isNullOrUndefined(pdfExportProperties.footer.contents) && !ej2_base_1.isNullOrUndefined(pdfExportProperties.footer.contents[0].value))
                        ? pdfExportProperties.footer.contents[0].value : this.exportProperties.footer;
                }
                var lastResult = (pdfDoc && pdfDoc['result'])
                    ? pdfDoc['result'] : null;
                var page = (pdfDoc && pdfExportProperties && pdfExportProperties.multipleExport &&
                    pdfExportProperties.multipleExport.type === 'AppendToPage' && lastResult)
                    ? lastResult.page : this.addPage(eventParams, pdfExportProperties);
                var pdfGrid = new ej2_pdf_export_1.PdfGrid();
                var pageSize = size > 0 ? size : 5;
                Eif (pivotValues && pivotValues.length > 0) {
                    pdfGrid.columns.add(pivotValues[0].length - integratedCnt >= pageSize ? pageSize : pivotValues[0].length - integratedCnt);
                    var rowLen = pivotValues.length;
                    var actualrCnt = 0;
                    var maxLevel = 0;
                    var columnWidth = 0;
                    for (var rCnt = 0; rCnt < rowLen; rCnt++) {
                        if (pivotValues[rCnt]) {
                            var isColHeader = !(pivotValues[rCnt][0] && pivotValues[rCnt][0].axis === 'row');
                            var colLen = pivotValues[rCnt].length > (integratedCnt + pageSize) ? (integratedCnt + pageSize)
                                : pivotValues[rCnt].length;
                            var rowCount = 0;
                            if (isColHeader) {
                                pdfGrid.headers.add(1);
                            }
                            var pdfGridRow = !isColHeader ? pdfGrid.rows.addRow() : pdfGrid.headers.getHeader(actualrCnt);
                            Eif (!ej2_base_1.isNullOrUndefined(pdfGridRow)) {
                                pdfGridRow.height = (this.parent && this.parent.gridSettings) ?
                                    this.parent.gridSettings.rowHeight : pdfGridRow.height;
                            }
                            Eif (!ej2_base_1.isNullOrUndefined(pdfGrid.style)) {
                                pdfGrid.style.cellPadding = new ej2_pdf_export_1.PdfPaddings(5.76, 5.76, 1.76, 1.76);
                            }
                            pdfGrid.repeatHeader = true;
                            if (isColHeader) {
                                pdfGridRow.style.setBorder(headerStyle.border);
                                Eif (headerStyle.font) {
                                    pdfGridRow.style.setFont(headerStyle.font);
                                }
                                pdfGridRow.style.setTextBrush(headerStyle.brush);
                            }
                            else {
                                this.setRecordThemeStyle(pdfGridRow);
                            }
                            var localCnt = 0;
                            var isEmptyRow = true;
                            for (var cCnt = integratedCnt; cCnt < colLen; cCnt++) {
                                var isValueCell = false;
                                var stringFormat = new ej2_pdf_export_1.PdfStringFormat();
                                stringFormat.lineAlignment = ej2_pdf_export_1.PdfVerticalAlignment.Middle;
                                if (pivotValues[rCnt][cCnt] && pivotValues[rCnt][cCnt].rowSpan !== 0) {
                                    var pivotCell = pivotValues[rCnt][cCnt];
                                    var cellValue = pivotCell.formattedText;
                                    cellValue = (this.parent.dataSourceSettings.rows.length === 0 || this.parent.dataSourceSettings.columns.length === 0) ? this.parent.getValuesHeader(pivotCell, 'value') : cellValue;
                                    cellValue = pivotCell.type === 'grand sum' ? (this.parent.dataSourceSettings.rows.length === 0 || this.parent.dataSourceSettings.columns.length === 0) ? this.parent.getValuesHeader(pivotCell, 'grandTotal') :
                                        this.parent.localeObj.getConstant('grandTotal') : (pivotCell.type === 'sum' ?
                                        cellValue.toString().replace('Total', this.parent.localeObj.getConstant('total')) : cellValue);
                                    var parentCell = void 0;
                                    if (pivotCell.colSpan > 1) {
                                        parentCell = pdfGridRow.cells.getCell(localCnt);
                                    }
                                    if (!(pivotCell.level === -1 && !pivotCell.rowSpan)) {
                                        Eif (!(pivotCell.level === -1 && !pivotCell.rowSpan)) {
                                            pdfGridRow.cells.getCell(localCnt).columnSpan = pivotCell.colSpan ?
                                                (pageSize - localCnt < pivotCell.colSpan ? pageSize - localCnt : pivotCell.colSpan) : 1;
                                            if ((isColHeader && pivotCell.rowSpan && pivotCell.rowSpan > 1) ||
                                                (!isColHeader && pivotCell.rowSpan && pivotCell.rowSpan > 1 && this.parent.isTabular)) {
                                                pdfGridRow.cells.getCell(localCnt).rowSpan = pivotCell.rowSpan ? pivotCell.rowSpan : 1;
                                            }
                                            pdfGridRow.cells.getCell(localCnt).value = cellValue ? cellValue.toString() : '';
                                        }
                                        if (cellValue !== '') {
                                            isEmptyRow = false;
                                        }
                                    }
                                    maxLevel = pivotCell.level > maxLevel ? pivotCell.level : maxLevel;
                                    isValueCell = pivotCell.axis === 'value';
                                    cCnt = cCnt + (pdfGridRow.cells.getCell(localCnt).columnSpan ?
                                        (pdfGridRow.cells.getCell(localCnt).columnSpan - 1) : 0);
                                    localCnt = localCnt + (pdfGridRow.cells.getCell(localCnt).columnSpan ?
                                        (pdfGridRow.cells.getCell(localCnt).columnSpan - 1) : 0);
                                    var isParentCellSpanned = !ej2_base_1.isNullOrUndefined(parentCell) && parentCell['colSpan'] > 1;
                                    var cell = isParentCellSpanned ? parentCell : pdfGridRow.cells.getCell(localCnt);
                                    var shouldApplyHeaderCellStyle = (pdfGridRow && pdfGridRow.isHeaderRow) || pivotCell.isGrandSum
                                        || pivotCell.type === 'grand sum' || pivotCell.axis === 'row';
                                    if (shouldApplyHeaderCellStyle && !ej2_base_1.isNullOrUndefined(this.pdfExportHelper)) {
                                        this.pdfExportHelper.applyHeaderBackground(cell);
                                    }
                                    if (pivotCell.style) {
                                        pdfGridRow = this.applyStyle(pdfGridRow, pivotCell, localCnt);
                                    }
                                    stringFormat.alignment = isValueCell ? ej2_pdf_export_1.PdfTextAlignment.Right : ej2_pdf_export_1.PdfTextAlignment.Left;
                                    cell.style.stringFormat = stringFormat;
                                    var args = {
                                        style: undefined,
                                        pivotCell: pivotCell,
                                        cell: pdfGridRow.cells.getCell(localCnt),
                                        column: pdfGrid.columns.getColumn(localCnt)
                                    };
                                    this.parent.trigger(events.onPdfCellRender, args);
                                    if (pivotCell.axis === 'column') {
                                        args = {
                                            style: args.style,
                                            cell: args.cell,
                                            gridCell: args.pivotCell,
                                            value: cellValue
                                        };
                                        this.parent.trigger(events.pdfHeaderQueryCellInfo, args);
                                        cell.value = args.value ?
                                            args.value : cellValue;
                                        Eif (!ej2_base_1.isNullOrUndefined(this.pdfExportHelper)) {
                                            if (!ej2_base_1.isNullOrUndefined(args.image)) {
                                                this.pdfExportHelper.configureCellImage(cell, args.image, pdfGridRow);
                                            }
                                            this.pdfExportHelper.setHyperLink(cell, args, pdfGridRow, pivotCell, this.parent);
                                        }
                                    }
                                    else {
                                        args = {
                                            style: args.style,
                                            cell: args.cell,
                                            column: undefined,
                                            data: args.pivotCell,
                                            value: cellValue
                                        };
                                        this.parent.trigger(events.pdfQueryCellInfo, args);
                                        cell.value = args.value ? args.value : cellValue;
                                        Eif (!ej2_base_1.isNullOrUndefined(this.pdfExportHelper)) {
                                            if (!ej2_base_1.isNullOrUndefined(args.image)) {
                                                this.pdfExportHelper.configureCellImage(cell, args.image, pdfGridRow);
                                            }
                                            this.pdfExportHelper.setHyperLink(cell, args, pdfGridRow, pivotCell, this.parent);
                                        }
                                    }
                                    if (args.style) {
                                        this.processCellStyle(cell, args);
                                    }
                                }
                                else {
                                    stringFormat.alignment = isValueCell ? ej2_pdf_export_1.PdfTextAlignment.Right : ej2_pdf_export_1.PdfTextAlignment.Left;
                                    var cell = pdfGridRow.cells.getCell(localCnt);
                                    cell.style.stringFormat = stringFormat;
                                    var args = {
                                        style: undefined,
                                        pivotCell: undefined,
                                        cell: cell,
                                        column: pdfGrid.columns.getColumn(localCnt)
                                    };
                                    this.parent.trigger(events.onPdfCellRender, args);
                                    columnWidth = args.column.width;
                                    var pivotCell = { formattedText: '', colIndex: 0, rowIndex: rCnt };
                                    args = {
                                        style: args.style,
                                        cell: args.cell,
                                        gridCell: pivotCell,
                                        value: undefined
                                    };
                                    this.parent.trigger(events.pdfHeaderQueryCellInfo, args);
                                    cell.value = args.value ?
                                        args.value : '';
                                    Eif (!ej2_base_1.isNullOrUndefined(this.pdfExportHelper)) {
                                        if (!ej2_base_1.isNullOrUndefined(args.image)) {
                                            this.pdfExportHelper.configureCellImage(cell, args.image, pdfGridRow);
                                        }
                                        if (pdfGridRow.isHeaderRow) {
                                            this.pdfExportHelper.applyHeaderBackground(cell);
                                        }
                                        this.pdfExportHelper.setHyperLink(cell, args, pdfGridRow, pivotCell, this.parent);
                                    }
                                    if (args.style) {
                                        this.processCellStyle(cell, args);
                                    }
                                    if (!isEmptyPivotTable) {
                                        if (this.parent.isTabular && rowCount === 0) {
                                            if (cCnt === 0 && isColHeader && this.parent.dataSourceSettings.columns &&
                                                this.parent.dataSourceSettings.columns.length > 0) {
                                                pdfGrid.headers.getHeader(0).cells.getCell(0).rowSpan =
                                                    Object.keys(this.engine.headerContent).length + 1;
                                                pdfGrid.headers.getHeader(0).cells.getCell(0).columnSpan =
                                                    this.parent.engineModule.rowMaxLevel + 1;
                                            }
                                            else if (cCnt !== 0 && isColHeader && this.parent.dataSourceSettings.columns &&
                                                this.parent.dataSourceSettings.columns.length > 0 &&
                                                pdfGrid.headers.getHeader(0).cells.getCell(0).rowSpan <
                                                    Object.keys(this.engine.headerContent).length) {
                                                pdfGrid.headers.getHeader(0).cells.getCell(0).rowSpan =
                                                    Object.keys(this.engine.headerContent).length;
                                                pdfGrid.headers.getHeader(0).cells.getCell(0).columnSpan =
                                                    this.parent.engineModule.rowMaxLevel + 1;
                                            }
                                            rowCount++;
                                        }
                                        else {
                                            if (cCnt === 0 && isColHeader && this.parent.dataSourceSettings.columns &&
                                                this.parent.dataSourceSettings.columns.length > 0) {
                                                pdfGrid.headers.getHeader(0).cells.getCell(0).rowSpan++;
                                            }
                                            else if (cCnt !== 0 && isColHeader && this.parent.dataSourceSettings.columns &&
                                                this.parent.dataSourceSettings.columns.length > 0 &&
                                                pdfGrid.headers.getHeader(0).cells.getCell(0).rowSpan <
                                                    Object.keys(this.engine.headerContent).length) {
                                                pdfGrid.headers.getHeader(0).cells.getCell(0).rowSpan++;
                                            }
                                        }
                                    }
                                }
                                if (this.parent.dataType === 'olap') {
                                    var indent_1 = 0;
                                    if (!isColHeader && localCnt === 0) {
                                        var cell = pivotValues[rCnt][cCnt];
                                        Eif (cell) {
                                            var levelName = cell.valueSort.levelName.toString();
                                            indent_1 = levelName.split(this.parent.dataSourceSettings.valueSortSettings.headerDelimiter).length - 1;
                                        }
                                    }
                                    stringFormat.paragraphIndent = indent_1 * 15;
                                    maxLevel = maxLevel > indent_1 ? maxLevel : indent_1;
                                }
                                else {
                                    stringFormat.paragraphIndent = 0;
                                    if ((!isColHeader && localCnt === 0 && pivotValues[rCnt][cCnt] &&
                                        pivotValues[rCnt][cCnt].level !== -1)) {
                                        var cell = pivotValues[rCnt][cCnt];
                                        var levelName = cell.valueSort ? cell.valueSort.levelName.toString() : '';
                                        var memberPos = cell.actualText ?
                                            cell.actualText.toString().split(this.parent.dataSourceSettings.valueSortSettings.headerDelimiter)
                                                .length : 0;
                                        var levelPosition = levelName.split(this.parent.dataSourceSettings.valueSortSettings.headerDelimiter).length -
                                            (memberPos ? memberPos - 1 : memberPos);
                                        var level = levelPosition ? (levelPosition - 1) : 0;
                                        stringFormat.paragraphIndent = level * 10;
                                    }
                                }
                                localCnt++;
                            }
                            if (isEmptyRow) {
                                pdfGridRow.height = 16;
                            }
                            actualrCnt++;
                        }
                    }
                    pdfGrid.columns.getColumn(0).width = columnWidth > 0 ? columnWidth : 100 + (maxLevel * 20);
                }
                if (integratedCnt === 0 && this.parent.dataSourceSettings.columns && this.parent.dataSourceSettings.columns.length > 0 &&
                    !isEmptyPivotTable) {
                    pdfGrid.headers.getHeader(0).cells.getCell(0).rowSpan--;
                }
                var xPosition = this.drawPosition['xPosition'];
                var yPosition = void 0;
                var isAppendToPage = !ej2_base_1.isNullOrUndefined(pdfDoc) && !ej2_base_1.isNullOrUndefined(pdfExportProperties) &&
                    !ej2_base_1.isNullOrUndefined(pdfExportProperties.multipleExport) &&
                    pdfExportProperties.multipleExport.type === 'AppendToPage' && !ej2_base_1.isNullOrUndefined(lastResult) &&
                    !ej2_base_1.isNullOrUndefined(lastResult.bounds);
                if (isAppendToPage) {
                    var baseYPosition = lastResult.bounds.y + lastResult.bounds.height;
                    yPosition = !ej2_base_1.isNullOrUndefined(pdfExportProperties.multipleExport.blankSpace) ?
                        baseYPosition + pdfExportProperties.multipleExport.blankSpace : baseYPosition;
                    var shouldAddNewPage = appendPageDrawCount > 0 ||
                        ((pdfGrid['gridHeaders'].rows[0].height + pdfGrid['gridHeaders'].count + yPosition) >= page.getClientSize().height);
                    Eif (shouldAddNewPage) {
                        page = this.addPage(eventParams, pdfExportProperties);
                        yPosition = this.drawPosition['yPosition'];
                    }
                }
                else {
                    yPosition = this.drawPosition['yPosition'];
                }
                result = pdfGrid.draw(page, new ej2_pdf_export_1.PointF(xPosition, yPosition));
                appendPageDrawCount++;
                integratedCnt = integratedCnt + pageSize;
                Iif (integratedCnt >= colLength && eventParams.args.pivotValues.length > (dataCollIndex + 1)) {
                    dataCollIndex++;
                    pivotValues = eventParams.args.pivotValues[dataCollIndex];
                    colLength = pivotValues && pivotValues.length > 0 ? pivotValues[0].length : 0;
                    integratedCnt = 0;
                    appendPageDrawCount = 0;
                }
            } while (integratedCnt < colLength);
            return new Promise(function (resolve) {
                var blobData;
                appendPageDrawCount = 0;
                if (isBlob || isMultipleExport) {
                    if (isBlob) {
                        blobData = eventParams.document.save();
                    }
                }
                else {
                    eventParams.document.save(fileName + '.pdf');
                    eventParams.document.destroy();
                }
                var exportCompleteEventArgs = {
                    type: 'PDF',
                    promise: isBlob ? blobData : null
                };
                _this.parent.trigger(events.exportComplete, exportCompleteEventArgs);
                if (pdfExportProperties && pdfExportProperties.multipleExport && pdfExportProperties.multipleExport.type === 'AppendToPage') {
                    resolve({ document: eventParams.document, result: result });
                }
                else {
                    resolve(eventParams.document);
                }
            });
        };
        PDFExport.prototype.applyStyle = function (pdfGridRow, pivotCell, localCnt) {
            var color = this.parent.conditionalFormattingModule.hexToRgb(pivotCell.style.backgroundColor);
            var brush = new ej2_pdf_export_1.PdfSolidBrush(new ej2_pdf_export_1.PdfColor(color.r, color.g, color.b));
            pdfGridRow.cells.getCell(localCnt).style.backgroundBrush = brush;
            var size = Number(pivotCell.style.fontSize.split('px')[0]);
            var font = new ej2_pdf_export_1.PdfStandardFont(ej2_pdf_export_1.PdfFontFamily.TimesRoman, size, ej2_pdf_export_1.PdfFontStyle.Regular);
            pdfGridRow.cells.getCell(localCnt).style.font = font;
            color = this.parent.conditionalFormattingModule.hexToRgb(pivotCell.style.color);
            brush = new ej2_pdf_export_1.PdfSolidBrush(new ej2_pdf_export_1.PdfColor(color.r, color.g, color.b));
            pdfGridRow.cells.getCell(localCnt).style.textBrush = brush;
            return pdfGridRow;
        };
        PDFExport.prototype.getFont = function (theme) {
            Iif (theme.style.font) {
                return theme.style.font;
            }
            var fontSize = !ej2_base_1.isNullOrUndefined(theme.style.fontSize) ? (theme.style.fontSize * 0.80) :
                (theme.cell['cellStyle'].font && theme.cell['cellStyle'].font.fontSize)
                    ? theme.cell['cellStyle'].font.fontSize : 11;
            var fontFamily = (!ej2_base_1.isNullOrUndefined(theme.style.fontFamily) && !ej2_base_1.isNullOrUndefined(this.pdfExportHelper)) ?
                (this.pdfExportHelper.getFontFamily(theme.style.fontFamily)) : ej2_pdf_export_1.PdfFontFamily.TimesRoman;
            var fontStyle = ej2_pdf_export_1.PdfFontStyle.Regular;
            if (!ej2_base_1.isNullOrUndefined(theme.style.bold) && theme.style.bold) {
                fontStyle |= ej2_pdf_export_1.PdfFontStyle.Bold;
            }
            if (!ej2_base_1.isNullOrUndefined(theme.style.italic) && theme.style.italic) {
                fontStyle |= ej2_pdf_export_1.PdfFontStyle.Italic;
            }
            if (!ej2_base_1.isNullOrUndefined(theme.style.underline) && theme.style.underline) {
                fontStyle |= ej2_pdf_export_1.PdfFontStyle.Underline;
            }
            if (!ej2_base_1.isNullOrUndefined(theme.style.strikeout) && theme.style.strikeout) {
                fontStyle |= ej2_pdf_export_1.PdfFontStyle.Strikeout;
            }
            return new ej2_pdf_export_1.PdfStandardFont(fontFamily, fontSize, fontStyle);
        };
        PDFExport.prototype.processCellStyle = function (gridCell, arg) {
            if (!ej2_base_1.isNullOrUndefined(arg.style.backgroundColor)) {
                var backColor = this.pdfExportHelper.hexDecToRgb(arg.style.backgroundColor);
                gridCell.style.backgroundBrush = new ej2_pdf_export_1.PdfSolidBrush(new ej2_pdf_export_1.PdfColor(backColor.r, backColor.g, backColor.b));
            }
            if (!ej2_base_1.isNullOrUndefined(arg.style.textBrushColor)) {
                var textBrushColor = this.pdfExportHelper.hexDecToRgb(arg.style.textBrushColor);
                gridCell.style.textBrush = new ej2_pdf_export_1.PdfSolidBrush(new ej2_pdf_export_1.PdfColor(textBrushColor.r, textBrushColor.g, textBrushColor.b));
            }
            if (!ej2_base_1.isNullOrUndefined(arg.style.textPenColor)) {
                var textColor = this.pdfExportHelper.hexDecToRgb(arg.style.textPenColor);
                gridCell.style.textPen = new ej2_pdf_export_1.PdfPen(new ej2_pdf_export_1.PdfColor(textColor.r, textColor.g, textColor.b));
            }
            if (!ej2_base_1.isNullOrUndefined(arg.style.fontFamily) || !ej2_base_1.isNullOrUndefined(arg.style.fontSize) || !ej2_base_1.isNullOrUndefined(arg.style.bold) ||
                !ej2_base_1.isNullOrUndefined(arg.style.italic) || !ej2_base_1.isNullOrUndefined(arg.style.underline) || !ej2_base_1.isNullOrUndefined(arg.style.strikeout)) {
                gridCell.style.font = this.getFont(arg);
            }
            if (!ej2_base_1.isNullOrUndefined(arg.style.border)) {
                var border = new ej2_pdf_export_1.PdfBorders();
                var borderWidth = arg.style.border.width;
                var width = (!ej2_base_1.isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? (borderWidth * 0.75) : (undefined);
                var color = new ej2_pdf_export_1.PdfColor(196, 196, 196);
                Eif (!ej2_base_1.isNullOrUndefined(arg.style.border.color)) {
                    var borderColor = this.pdfExportHelper.hexDecToRgb(arg.style.border.color);
                    color = new ej2_pdf_export_1.PdfColor(borderColor.r, borderColor.g, borderColor.b);
                }
                var pen = new ej2_pdf_export_1.PdfPen(color, width);
                Eif (!ej2_base_1.isNullOrUndefined(arg.style.border.dashStyle)) {
                    pen.dashStyle = this.pdfExportHelper.getDashStyle(arg.style.border.dashStyle);
                }
                border.all = pen;
                gridCell.style.borders = border;
            }
            if (!ej2_base_1.isNullOrUndefined(arg.style) && !ej2_base_1.isNullOrUndefined(arg.style.textAlignment)
                && !ej2_base_1.isNullOrUndefined(gridCell.style) && !ej2_base_1.isNullOrUndefined(gridCell.style.stringFormat)) {
                gridCell.style.stringFormat.alignment = arg.style.textAlignment === 'Right' ? ej2_pdf_export_1.PdfTextAlignment.Right :
                    ej2_pdf_export_1.PdfTextAlignment.Left;
            }
            if (!ej2_base_1.isNullOrUndefined(arg.style) && !ej2_base_1.isNullOrUndefined(arg.style.verticalAlignment)
                && !ej2_base_1.isNullOrUndefined(gridCell.style) && !ej2_base_1.isNullOrUndefined(gridCell.style.stringFormat)) {
                gridCell.style.stringFormat.lineAlignment = arg.style.verticalAlignment === 'Top' ?
                    ej2_pdf_export_1.PdfVerticalAlignment.Top : arg.style.verticalAlignment === 'Bottom' ?
                    ej2_pdf_export_1.PdfVerticalAlignment.Bottom : ej2_pdf_export_1.PdfVerticalAlignment.Middle;
            }
        };
        PDFExport.prototype.applyEvent = function () {
            var clonedValues;
            var mdxQuery;
            var currentPivotValues = export_util_1.PivotExportUtil.getClonedPivotValues(this.engine.pivotValues);
            if (this.parent.exportAllPages && (this.parent.enableVirtualization || this.parent.enablePaging) && this.parent.dataSourceSettings.mode !== 'Server') {
                var pageSettings = this.engine.pageSettings;
                this.engine.isPagingOrVirtualizationEnabled = false;
                if (this.parent.dataType === 'olap') {
                    this.updateOlapPageSettings(true);
                    mdxQuery = this.parent.olapEngineModule.mdxQuery.slice(0);
                }
                else {
                    this.engine.pageSettings = null;
                }
                this.engine.generateGridData(this.parent.dataSourceSettings, true, true);
                this.parent.applyFormatting(this.engine.pivotValues);
                clonedValues = export_util_1.PivotExportUtil.getClonedPivotValues(this.engine.pivotValues);
                this.engine.pivotValues = currentPivotValues;
                this.engine.pageSettings = pageSettings;
                this.engine.isPagingOrVirtualizationEnabled = true;
                if (this.parent.dataType === 'olap') {
                    this.updateOlapPageSettings(false);
                    this.parent.olapEngineModule.mdxQuery = mdxQuery;
                }
            }
            else {
                clonedValues = currentPivotValues;
            }
            var args = {
                pivotValues: [clonedValues]
            };
            this.parent.trigger(events.enginePopulated, args);
            this.document = new ej2_pdf_export_1.PdfDocument();
            return { document: this.document, args: args };
        };
        PDFExport.prototype.updateOlapPageSettings = function (isUpdate) {
            this.parent.olapEngineModule.isExporting = isUpdate ? true : false;
            if (!this.parent.exportSpecifiedPages) {
                this.parent.olapEngineModule.pageSettings = isUpdate ? null : this.parent.olapEngineModule.pageSettings;
                this.parent.olapEngineModule.isPaging = isUpdate ? false : true;
            }
            else {
                this.parent.olapEngineModule.exportSpeciedPages = this.parent.exportSpecifiedPages = isUpdate ?
                    this.parent.exportSpecifiedPages : undefined;
            }
        };
        PDFExport.prototype.cleanupDocument = function (document) {
            Eif (document) {
                document.destroy();
                var index = this.createdDocuments.indexOf(document);
                if (index !== -1) {
                    this.createdDocuments.splice(index, 1);
                }
            }
        };
        PDFExport.prototype.destroy = function () {
            for (var i = 0; i < this.createdDocuments.length; i++) {
                this.cleanupDocument(this.createdDocuments[i]);
            }
            this.createdDocuments = [];
            if (this.document) {
                this.cleanupDocument(this.document);
                this.document = null;
            }
            Eif (this.pdfExportHelper) {
                this.pdfExportHelper = null;
            }
            if (this.engine) {
                this.engine = null;
            }
            if (this.exportProperties) {
                this.exportProperties = null;
            }
            if (this.gridStyle) {
                this.gridStyle = null;
            }
        };
        return PDFExport;
    }());
    exports.PDFExport = PDFExport;
});