×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: Javascript
Posted by: karguvel kalisekar
Added: Jun 15, 2017 4:32 AM
Views: 5
Tags: pdf word exel csc
  1. /*The MIT License (MIT)
  2.  Copyright (c) 2014 https://github.com/kayalshri/
  3.  Permission is hereby granted, free of charge, to any person obtaining a copy
  4.  of this software and associated documentation files (the "Software"), to deal
  5.  in the Software without restriction, including without limitation the rights
  6.  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  7.  copies of the Software, and to permit persons to whom the Software is
  8.  furnished to do so, subject to the following conditions:
  9.  The above copyright notice and this permission notice shall be included in
  10.  all copies or substantial portions of the Software.
  11.  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  12.  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  13.  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  14.  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  15.  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  16.  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  17.  THE SOFTWARE.*/
  18.  
  19. (function ($) {
  20.     $.fn.extend({
  21.         tableExport: function (options) {
  22.             var defaults = {
  23.                 separator: ',',
  24.                 ignoreColumn: [],
  25.                 tableName: 'MyOwnFileName',
  26.                 type: 'csv',
  27.                 pdfFontSize: 12,
  28.                 pdfLeftMargin: 20,
  29.                 escape: 'true',
  30.                 htmlContent: 'false',
  31.                 consoleLog: 'false'
  32.             };
  33.  
  34.             var options = $.extend(defaults, options);
  35.  
  36.             var el = this;
  37.             if (defaults.type == 'csv' || defaults.type == 'txt') {
  38.  
  39.                 // Header
  40.                 var tdData = "";
  41.                 $(el).find('thead').find('tr').each(function () {
  42.                     tdData += "\n";
  43.                     $(this).filter(':visible').find('th').each(function (index, data) {
  44.                         if ($(this).css('display') != 'none') {
  45.                             if (defaults.ignoreColumn.indexOf(index) == -1) {
  46.                                 tdData += '"' + parseString($(this)) + '"' + defaults.separator;
  47.                             }
  48.                         }
  49.                     });
  50.                     tdData = $.trim(tdData);
  51.                     tdData = $.trim(tdData).substring(0, tdData.length - 1);
  52.                 });
  53.  
  54.                 // Row vs Column
  55.                 $(el).find('tbody').find('tr').each(function () {
  56.                     tdData += "\n";
  57.                     $(this).filter(':visible').find('td').each(function (index, data) {
  58.                         if ($(this).css('display') != 'none') {
  59.                             if (defaults.ignoreColumn.indexOf(index) == -1) {
  60.                                 tdData += '"' + parseString($(this)) + '"' + defaults.separator;
  61.                             }
  62.                         }
  63.                     });
  64.                     //tdData = $.trim(tdData);
  65.                     tdData = $.trim(tdData).substring(0, tdData.length - 1);
  66.                 });
  67.  
  68.                 //output
  69.                 if (defaults.consoleLog == 'true') {
  70.                     console.log(tdData);
  71.                 }
  72.                 var base64data = "base64," + $.base64.encode(tdData);
  73.                 window.open('data:application/' + defaults.type + ';filename=exportData;' + base64data);
  74.             } else if (defaults.type == 'sql') {
  75.  
  76.                 // Header
  77.                 var tdData = "INSERT INTO `" + defaults.tableName + "` (";
  78.                 $(el).find('thead').find('tr').each(function () {
  79.  
  80.                     $(this).filter(':visible').find('th').each(function (index, data) {
  81.                         if ($(this).css('display') != 'none') {
  82.                             if (defaults.ignoreColumn.indexOf(index) == -1) {
  83.                                 tdData += '`' + parseString($(this)) + '`,';
  84.                             }
  85.                         }
  86.  
  87.                     });
  88.                     tdData = $.trim(tdData);
  89.                     tdData = $.trim(tdData).substring(0, tdData.length - 1);
  90.                 });
  91.                 tdData += ") VALUES ";
  92.                 // Row vs Column
  93.                 $(el).find('tbody').find('tr').each(function () {
  94.                     tdData += "(";
  95.                     $(this).filter(':visible').find('td').each(function (index, data) {
  96.                         if ($(this).css('display') != 'none') {
  97.                             if (defaults.ignoreColumn.indexOf(index) == -1) {
  98.                                 tdData += '"' + parseString($(this)) + '",';
  99.                             }
  100.                         }
  101.                     });
  102.  
  103.                     tdData = $.trim(tdData).substring(0, tdData.length - 1);
  104.                     tdData += "),";
  105.                 });
  106.                 tdData = $.trim(tdData).substring(0, tdData.length - 1);
  107.                 tdData += ";";
  108.  
  109.                 //output
  110.                 //console.log(tdData);
  111.  
  112.                 if (defaults.consoleLog == 'true') {
  113.                     console.log(tdData);
  114.                 }
  115.  
  116.                 var base64data = "base64," + $.base64.encode(tdData);
  117.                 window.open('data:application/sql;filename=exportData;' + base64data);
  118.  
  119.  
  120.             } else if (defaults.type == 'json') {
  121.  
  122.                 var jsonHeaderArray = [];
  123.                 $(el).find('thead').find('tr').each(function () {
  124.                     var tdData = "";
  125.                     var jsonArrayTd = [];
  126.  
  127.                     $(this).filter(':visible').find('th').each(function (index, data) {
  128.                         if ($(this).css('display') != 'none') {
  129.                             if (defaults.ignoreColumn.indexOf(index) == -1) {
  130.                                 jsonArrayTd.push(parseString($(this)));
  131.                             }
  132.                         }
  133.                     });
  134.                     jsonHeaderArray.push(jsonArrayTd);
  135.  
  136.                 });
  137.  
  138.                 var jsonArray = [];
  139.                 $(el).find('tbody').find('tr').each(function () {
  140.                     var tdData = "";
  141.                     var jsonArrayTd = [];
  142.  
  143.                     $(this).filter(':visible').find('td').each(function (index, data) {
  144.                         if ($(this).css('display') != 'none') {
  145.                             if (defaults.ignoreColumn.indexOf(index) == -1) {
  146.                                 jsonArrayTd.push(parseString($(this)));
  147.                             }
  148.                         }
  149.                     });
  150.                     jsonArray.push(jsonArrayTd);
  151.  
  152.                 });
  153.  
  154.                 var jsonExportArray = [];
  155.                 jsonExportArray.push({header: jsonHeaderArray, data: jsonArray});
  156.  
  157.                 //Return as JSON
  158.                 //console.log(JSON.stringify(jsonExportArray));
  159.  
  160.                 //Return as Array
  161.                 //console.log(jsonExportArray);
  162.                 if (defaults.consoleLog == 'true') {
  163.                     console.log(JSON.stringify(jsonExportArray));
  164.                 }
  165.                 var base64data = "base64," + $.base64.encode(JSON.stringify(jsonExportArray));
  166.                 window.open('data:application/json;filename=exportData;' + base64data);
  167.             } else if (defaults.type == 'xml') {
  168.  
  169.                 var xml = '<?xml version="1.0" encoding="utf-8"?>';
  170.                 xml += '<tabledata><fields>';
  171.  
  172.                 // Header
  173.                 $(el).find('thead').find('tr').each(function () {
  174.                     $(this).filter(':visible').find('th').each(function (index, data) {
  175.                         if ($(this).css('display') != 'none') {
  176.                             if (defaults.ignoreColumn.indexOf(index) == -1) {
  177.                                 xml += "<field>" + parseString($(this)) + "</field>";
  178.                             }
  179.                         }
  180.                     });
  181.                 });
  182.                 xml += '</fields><data>';
  183.  
  184.                 // Row Vs Column
  185.  
  186.                 var rowCount = 1;
  187.                 $(el).find('tbody').find('tr').each(function () {
  188.                     xml += '<row id="' + rowCount + '">';
  189.                     var colCount = 0;
  190.                     $(this).filter(':visible').find('td').each(function (index, data) {
  191.                         if ($(this).css('display') != 'none') {
  192.                             if (defaults.ignoreColumn.indexOf(index) == -1) {
  193.                                 xml += "<column-" + colCount + ">" + parseString($(this)) + "</column-" + colCount + ">";
  194.                             }
  195.                         }
  196.                         colCount++;
  197.                     });
  198.                     rowCount++;
  199.                     xml += '</row>';
  200.                 });
  201.                 xml += '</data></tabledata>'
  202.  
  203.                 if (defaults.consoleLog == 'true') {
  204.                     console.log(xml);
  205.                 }
  206.  
  207.                 var base64data = "base64," + $.base64.encode(xml);
  208.                 window.open('data:application/xml;filename=exportData;' + base64data);
  209.  
  210.             } else if (defaults.type == 'excel' || defaults.type == 'doc' || defaults.type == 'powerpoint') {
  211.                 //console.log($(this).html());
  212.                 var excel = "<table border='1'>";
  213.                 // Header
  214.                 $(el).find('thead').find('tr').each(function (index, data) {
  215.                     if (data.id !== 'hide') {
  216.                         if ($(el).find('thead').find('tr').id !== 'hide') {
  217.                             excel += "<tr>";
  218.                             $(this).find('th').each(function (index, data) {
  219.                                 if (data.colSpan > 1 && (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify')) {
  220.                                     if (data.id !== 'hide') {
  221.                                         return excel += "<th colspan=" + data.colSpan + " align=" + data.align + ">" + parseString($(this)) + "</th>";
  222.                                     }
  223.                                 } else if (data.rowSpan > 1 && (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify')) {
  224.                                     if (data.id !== 'hide') {
  225.                                         return excel += "<th rowSpan=" + data.colSpan + " align=" + data.align + ">" + parseString($(this)) + "</th>";
  226.                                     }
  227.                                 } else if (data.colSpan > 1) {
  228.                                     if ($(this).find('th').length > 0) {
  229.                                         excel += "<th colspan=" + data.colSpan + ">" + (data.firstChild.data).trim();
  230.                                         excel += "<table>";
  231.                                         $(data).find('table').find('tr').each(function (index, data1) {
  232.                                             excel += "<tr>";
  233.                                             if ($(data1).find('th').length > 0) {
  234.                                                 $(data1).find('th').each(function (index, data2) {
  235.                                                     excel += "<th>" + data2.textContent + "</th>";
  236.                                                 });
  237.                                             }
  238.                                             excel += "</tr>";
  239.                                         });
  240.                                         excel += "</table>";
  241.                                         excel += "</th>";
  242.                                     } else {
  243.                                         if (data.id !== 'hide') {
  244.                                             return  excel += "<th colspan=" + data.colSpan + ">" + parseString($(this)) + "</th>";
  245.                                         }
  246.                                     }
  247.                                 } else if (data.rowSpan > 1) {
  248.                                     if (data.id !== 'hide') {
  249.                                         return  excel += "<th rowSpan=" + data.rowSpan + ">" + parseString($(this)) + "</th>";
  250.                                     }
  251.                                 } else if (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify') {
  252.                                     if (data.id !== 'hide') {
  253.                                         return  excel += "<th align=" + data.align + ">" + parseString($(this)) + "</th>";
  254.                                     }
  255.                                 } else if (defaults.ignoreColumn.indexOf(index) == -1) {
  256.                                     if (data.id !== 'hide') {
  257.                                         return  excel += "<th>" + parseString($(this)) + "</th>";
  258.                                     }
  259.                                 }
  260.                             });
  261.                             $(this).find('td').each(function (index, data) {
  262.                                
  263.                                if (data.colSpan > 1 && data.bgColor !=="" && (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify')) {
  264.                                     excel += "<td colspan=" + data.colSpan + " align=" + data.align + " bgcolor="+ data.bgColor + ">" + parseString($(this)) + "</td>";
  265.                                } else if (data.rowSpan > 1 && data.bgColor !=="" (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify')) {
  266.                                     excel += "<td rowSpan=" + data.colSpan + " align=" + data.align + " bgcolor="+ data.bgColor + ">" + parseString($(this)) + "</td>";
  267.                                 }else if (data.colSpan > 1 && (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify')) {
  268.                                     excel += "<td colspan=" + data.colSpan + " align=" + data.align + ">" + parseString($(this)) + "</td>";
  269.                                 } else if (data.rowSpan > 1 && (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify')) {
  270.                                     excel += "<td rowSpan=" + data.colSpan + " align=" + data.align + ">" + parseString($(this)) + "</td>";
  271.                                 } else if (data.colSpan > 1 && data.bgColor !=="") {
  272.                                     excel += "<td colspan=" + data.colSpan + " bgcolor="+ data.bgColor + ">" + parseString($(this)) + "</td>";
  273.                                 } else if (data.rowSpan > 1 && data.bgColor !=="") {
  274.                                     excel += "<td rowSpan=" + data.colSpan + "  bgcolor="+ data.bgColor + ">" + parseString($(this)) + "</td>";
  275.                                 }else if (data.colSpan > 1) {
  276.                                     excel += "<td colspan=" + data.colSpan + ">" + parseString($(this)) + "</td>";
  277.                                 } else if (data.rowSpan > 1) {
  278.                                     excel += "<td rowSpan=" + data.colSpan + ">" + parseString($(this)) + "</td>";
  279.                                 } else if ((data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify')&& data.bgColor !=="") {
  280.                                     excel += "<td align=" + data.align + " bgcolor="+ data.bgColor + ">" + parseString($(this)) + "</td>";
  281.                                 } else if (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify') {
  282.                                     excel += "<td align=" + data.align + ">" + parseString($(this)) + "</td>";
  283.                                 } else if(data.bgColor !==""){
  284.                                      excel += "<td bgcolor="+ data.bgColor + ">" + parseString($(this)) + "</td>";
  285.                                 }  else if (defaults.ignoreColumn.indexOf(index) == -1) {
  286.                                     excel += "<td>" + parseString($(this)) + "</td>";
  287.                                 }
  288.                             });
  289.  
  290.                             excel += '</tr>';
  291.                         }
  292.                     }
  293.                 });
  294.  
  295.                 // Row Vs Column
  296.                 if (defaults.data.name === 'undefined' || defaults.data.name === undefined) {
  297.                     var rowCount = 1;
  298.                     $(el).find('tbody').find('tr').each(function (index, data) {
  299.                         if (data.id !== 'hide') {
  300.                             excel += "<tr>";
  301.                             var colCount = 0;
  302.                             $(this).find('td').each(function (index, data) {
  303.                                 if (data.id !== 'hide') {
  304.                                 if (data.colSpan > 1 && data.bgColor !=="" && (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify')) {
  305.                                     excel += "<td colspan=" + data.colSpan + " align=" + data.align + " bgcolor="+ data.bgColor + ">" + parseString($(this)) + "</td>";
  306.                                 } else if (data.rowSpan > 1 && data.bgColor !=="" (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify')) {
  307.                                     excel += "<td rowSpan=" + data.colSpan + " align=" + data.align + " bgcolor="+ data.bgColor + ">" + parseString($(this)) + "</td>";
  308.                                 }else if (data.colSpan > 1 && (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify')) {
  309.                                     excel += "<td colspan=" + data.colSpan + " align=" + data.align + ">" + parseString($(this)) + "</td>";
  310.                                 } else if (data.rowSpan > 1 && (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify')) {
  311.                                     excel += "<td rowSpan=" + data.colSpan + " align=" + data.align + ">" + parseString($(this)) + "</td>";
  312.                                 } else if (data.colSpan > 1 && data.bgColor !=="") {
  313.                                     excel += "<td colspan=" + data.colSpan + " bgcolor="+ data.bgColor + ">" + parseString($(this)) + "</td>";
  314.                                 } else if (data.rowSpan > 1 && data.bgColor !=="") {
  315.                                     excel += "<td rowSpan=" + data.colSpan + "  bgcolor="+ data.bgColor + ">" + parseString($(this)) + "</td>";
  316.                                 }else if (data.colSpan > 1) {
  317.                                     excel += "<td colspan=" + data.colSpan + ">" + parseString($(this)) + "</td>";
  318.                                 } else if (data.rowSpan > 1) {
  319.                                     excel += "<td rowSpan=" + data.colSpan + ">" + parseString($(this)) + "</td>";
  320.                                 } else if ((data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify')&& data.bgColor !=="") {
  321.                                     excel += "<td align=" + data.align + " bgcolor="+ data.bgColor + ">" + parseString($(this)) + "</td>";
  322.                                 } else if (data.align === 'left' || data.align === 'right' || data.align === 'center' || data.align === 'justify') {
  323.                                     excel += "<td align=" + data.align + ">" + parseString($(this)) + "</td>";
  324.                                 } else if(data.bgColor !==""){
  325.                                      excel += "<td bgcolor="+ data.bgColor + ">" + parseString($(this)) + "</td>";
  326.                                 } else if (defaults.ignoreColumn.indexOf(index) == -1) {
  327.                                     var data1 = data.textContent.trim();
  328.                                     var removeAllSpecialCharactors = data1.replace(/[^\w\s]/gi, '');
  329.                                     var checkNumberOnly = /^\d+$/;
  330.  
  331.                                     if (removeAllSpecialCharactors.match(checkNumberOnly)) {
  332.                                         if (data.id === "invalidNo") {
  333.                                             var data = data.textContent + ":00"
  334.                                             excel += "<td align=right>" + data + "</td>";
  335.                                         } else {
  336.                                             excel += "<td align=right>" + parseString($(this)) + "</td>";
  337.                                         }
  338.                                     } else {
  339.                                         excel += "<td align=left>" + parseString($(this)) + "</td>";
  340.                                     }
  341.                                 }
  342. //                        if (defaults.ignoreColumn.indexOf(index) == -1) {
  343. //                            excel += "<td>" + parseString($(this)) + "</td>";
  344. //                        }
  345.                                 colCount++;
  346.                                 }
  347.                             });
  348.                             rowCount++;
  349.                             excel += '</tr>';
  350.                         }
  351.                     });
  352.                 } else {
  353.                     var rowCount = 1;
  354.                     $(el).find('tbody').find('tr').each(function () {
  355.                         if ($(this).find('td').length > 2) {
  356.                             excel += "<tr>";
  357.                             var colCount = 0;
  358.                             $(this).find('td').each(function (index, data) {
  359.                                 if (data.colSpan > 1 || data.id === 'show' || data.id === 'shown') {
  360.                                     if (data.colSpan > 1) {
  361.                                         excel += "<td colspan=" + data.colSpan + ">";
  362.                                         excel += "<table>";
  363.                                         excel += "<tr>";
  364.                                     } else if (data.id === 'show') {
  365.                                         excel += "<td align='center'> " + data.textContent + "</td>";
  366.                                     } else if (data.id === 'shown') {
  367.                                         excel += "<td align='center'>" + data.textContent + "</td>";
  368.                                         excel += "</tr>";
  369.                                         excel += "</table>";
  370.                                         excel += "</td>";
  371.                                     }
  372.                                 } else {
  373.                                     var data = data.textContent.trim();
  374.                                     var removeAllSpecialCharactors = data.replace(/[^\w\s]/gi, '');
  375.                                     var checkNumberOnly = /^\d+$/;
  376.                                     if (removeAllSpecialCharactors.match(checkNumberOnly)) {
  377.                                         excel += "<td align=right>" + parseString($(this)) + "</td>";
  378.                                     } else {
  379.                                         excel += "<td align=left>" + parseString($(this)) + "</td>";
  380.                                     }
  381.                                 }
  382.                                 colCount++;
  383.                             });
  384.  
  385.                             rowCount++;
  386.                             excel += '</tr>';
  387.                         }
  388.                     });
  389.                 }
  390.  
  391.                 excel += '</table>';
  392.                 if (defaults.consoleLog === 'true') {
  393.  
  394.                 }
  395.                
  396.                 var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:" + defaults.type + "' xmlns='http://www.w3.org/TR/REC-html40'>";
  397.                 excelFile += "<head>";
  398.                 excelFile += "<!--[if gte mso 9]>";
  399.                 excelFile += "<xml>";
  400.                 excelFile += "<x:ExcelWorkbook>";
  401.                 excelFile += "<x:ExcelWorksheets>";
  402.                 excelFile += "<x:ExcelWorksheet>";
  403.                 excelFile += "<x:Name>";
  404.                 excelFile += "{worksheet}";
  405.                 excelFile += "</x:Name>";
  406.                 excelFile += "<x:WorksheetOptions>";
  407.                 excelFile += "<x:DisplayGridlines/>";
  408.                 excelFile += "</x:WorksheetOptions>";
  409.                 excelFile += "</x:ExcelWorksheet>";
  410.                 excelFile += "</x:ExcelWorksheets>";
  411.                 excelFile += "</x:ExcelWorkbook>";
  412.                 excelFile += "</xml>";
  413.                 excelFile += "<![endif]-->";
  414.                 excelFile += "</head>";
  415.                 excelFile += "<body>";
  416.                 excelFile += excel;
  417.                 excelFile += "</body>";
  418.                 excelFile += "</html>";
  419.                 var Base64 = {_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", encode: function (e) {
  420.                         var t = "";
  421.                         var n, r, i, s, o, u, a;
  422.                         var f = 0;
  423.                         e = Base64._utf8_encode(e);
  424.                         while (f < e.length) {
  425.                             n = e.charCodeAt(f++);
  426.                             r = e.charCodeAt(f++);
  427.                             i = e.charCodeAt(f++);
  428.                             s = n >> 2;
  429.                             o = (n & 3) << 4 | r >> 4;
  430.                             u = (r & 15) << 2 | i >> 6;
  431.                             a = i & 63;
  432.                             if (isNaN(r)) {
  433.                                 u = a = 64;
  434.                             } else if (isNaN(i)) {
  435.                                 a = 64;
  436.                             }
  437.                             t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a)
  438.                         }
  439.                         return t;
  440.                     }, decode: function (e) {
  441.                         var t = "";
  442.                         var n, r, i;
  443.                         var s, o, u, a;
  444.                         var f = 0;
  445.                         e = e.replace(/[^A-Za-z0-9+/=]/g, "");
  446.                         while (f < e.length) {
  447.                             s = this._keyStr.indexOf(e.charAt(f++));
  448.                             o = this._keyStr.indexOf(e.charAt(f++));
  449.                             u = this._keyStr.indexOf(e.charAt(f++));
  450.                             a = this._keyStr.indexOf(e.charAt(f++));
  451.                             n = s << 2 | o >> 4;
  452.                             r = (o & 15) << 4 | u >> 2;
  453.                             i = (u & 3) << 6 | a;
  454.                             t = t + String.fromCharCode(n);
  455.                             if (u != 64) {
  456.                                 t = t + String.fromCharCode(r)
  457.                             }
  458.                             if (a != 64) {
  459.                                 t = t + String.fromCharCode(i)
  460.                             }
  461.                         }
  462.                         t = Base64._utf8_decode(t);
  463.                         return t
  464.                     }, _utf8_encode: function (e) {
  465.                         e = e.replace(/rn/g, "n");
  466.                         var t = "";
  467.                         for (var n = 0; n < e.length; n++) {
  468.                             var r = e.charCodeAt(n);
  469.                             if (r < 128) {
  470.                                 t += String.fromCharCode(r)
  471.                             } else if (r > 127 && r < 2048) {
  472.                                 t += String.fromCharCode(r >> 6 | 192);
  473.                                 t += String.fromCharCode(r & 63 | 128)
  474.                             } else {
  475.                                 t += String.fromCharCode(r >> 12 | 224);
  476.                                 t += String.fromCharCode(r >> 6 & 63 | 128);
  477.                                 t += String.fromCharCode(r & 63 | 128)
  478.                             }
  479.                         }
  480.                         return t
  481.                     }, _utf8_decode: function (e) {
  482.                         var t = "";
  483.                         var n = 0;
  484.                         var r = c1 = c2 = 0;
  485.                         while (n < e.length) {
  486.                             r = e.charCodeAt(n);
  487.                             if (r < 128) {
  488.                                 t += String.fromCharCode(r);
  489.                                 n++
  490.                             } else if (r > 191 && r < 224) {
  491.                                 c2 = e.charCodeAt(n + 1);
  492.                                 t += String.fromCharCode((r & 31) << 6 | c2 & 63);
  493.                                 n += 2
  494.                             } else {
  495.                                 c2 = e.charCodeAt(n + 1);
  496.                                 c3 = e.charCodeAt(n + 2);
  497.                                 t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
  498.                                 n += 3
  499.                             }
  500.                         }
  501.                         return t
  502.                     }}
  503.                 var base64data = "base64," + Base64.encode(excelFile);
  504.  
  505. //                document.getElementById("dlink").href = 'data:application/vnd.ms-' + defaults.type + ';filename=exportData.doc;' + base64data;
  506. //                document.getElementById("dlink").download = defaults.tableName.toString() + '.xls';
  507. //                document.getElementById("dlink").click();
  508. //               // window.open('data:application/vnd.ms-' + defaults.type + ';filename=exportData.doc;' + base64data);
  509.                 $('<a style="display:none" href="data:application/vnd.ms-' + defaults.type + ';filename=exportData.doc;' + base64data + '" download="' + defaults.data.filename.toString() + '.xls"><span></span></a>').appendTo(document.body).find('span').trigger("click").parent().remove();
  510.             } else if (defaults.type == 'png') {
  511.                 html2canvas($(el), {
  512.                     onrendered: function (canvas) {
  513.                         var img = canvas.toDataURL("image/png");
  514.                         window.open(img);
  515.  
  516.  
  517.                     }
  518.                 });
  519.             } else
  520.             if (defaults.type == 'pdf') {
  521.                 var mValue;
  522.                 if(options.data.Header5){
  523.                     mValue=105;
  524.                 }else{
  525.                     mValue=85;
  526.                 }
  527.                 if (options.data.heading === 'Consolidate Payroll Report') {
  528.                     var doc = new jsPDF('l', 'pt', 'a4', true);
  529.                 } else {
  530.                     var doc = new jsPDF('p', 'pt', 'a4', true);
  531.                 }
  532.                 var totalPagesExp = "{total_pages_count_string}";
  533.                 var val = [];
  534.                 doc.setFontSize(defaults.pdfFontSize);
  535.                 var res = doc.autoTableHtmlToJson(document.getElementById("testTablePDF"), false);
  536.  
  537.                 var base64data;
  538.  
  539.                 //var imgData = 'data:image/png;base64,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/GMzLdsAAECyaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgICAgICAgICB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTExLTIwVDE1OjUzOjQ0KzA1OjMwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDUtMTlUMTM6MjA6NTkrMDU6MzA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTA1LTE5VDEzOjIwOjU5KzA1OjMwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2ZpbGU+c1JHQiBJRUM2MTk2Ni0yLjE8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgogICAgICAgICA8cGhvdG9zaG9wOlRleHRMYXllcnM+CiAgICAgICAgICAgIDxyZGY6QmFnPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHBob3Rvc2hvcDpMYXllck5hbWU+YWNhZGVteTwvcGhvdG9zaG9wOkxheWVyTmFtZT4KICAgICAgICAgICAgICAgICAgPHBob3Rvc2hvcDpMYXllclRleHQ+YWNhZGVteTwvcGhvdG9zaG9wOkxheWVyVGV4dD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOkJhZz4KICAgICAgICAgPC9waG90b3Nob3A6VGV4dExheWVycz4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDo2MzgwYTkyNi1jMzBkLThmNDEtYjY1Zi04ZmE2YWQxOTRjZmM8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnhtcC5kaWQ6ODk4ZWFhNjItMzZjYS04OTRhLTlmZjQtMmJmY2Y4Y2EyNmNkPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6ODk4ZWFhNjItMzZjYS04OTRhLTlmZjQtMmJmY2Y4Y2EyNmNkPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjg5OGVhYTYyLTM2Y2EtODk0YS05ZmY0LTJiZmNmOGNhMjZjZDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0xMS0yMFQxNTo1Mzo0NCswNTozMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NDFjZmIxOWYtNGVkMS00NDRjLTg0MDAtNmVhYjJkZmU5MTdkPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA1LTE5VDEzOjIwOjU5KzA1OjMwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVydGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJzPmZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5kZXJpdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJzPmNvbnZlcnRlZCBmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nPC9zdEV2dDpwYXJhbWV0ZXJzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo2MzgwYTkyNi1jMzBkLThmNDEtYjY1Zi04ZmE2YWQxOTRjZmM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTUtMDUtMTlUMTM6MjA6NTkrMDU6MzA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDo0MWNmYjE5Zi00ZWQxLTQ0NGMtODQwMC02ZWFiMmRmZTkxN2Q8L3N0UmVmOmluc3RhbmNlSUQ+CiAgICAgICAgICAgIDxzdFJlZjpkb2N1bWVudElEPnhtcC5kaWQ6ODk4ZWFhNjItMzZjYS04OTRhLTlmZjQtMmJmY2Y4Y2EyNmNkPC9zdFJlZjpkb2N1bWVudElEPgogICAgICAgICAgICA8c3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6ODk4ZWFhNjItMzZjYS04OTRhLTlmZjQtMmJmY2Y4Y2EyNmNkPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjE3NDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj41ODwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+keFjjAAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAATT0lEQVR42uyceXQcxZ3HP1Xdc2gkjS5Llm9byPjAFwYMBgIGmzOBBMIVIMfmZR95CUsONi+P5QG7OBBCDq7wwu6GK4SEhA3mSDZAgDUkIU4wCb5iMMb4lizJOizNjGamu2r/6Bp5NJqRRocNhP6+189WTXdXd9W36vf9/epXLbTW+PDxQYP0m8CHT1wfPnzi+vDhE9eHT1wfPnzi+vDhE9fHhwc2QPuUI3PLlwLzgB8DQwZ6w9qhS4YB+H3oCG6OnoXUIPBjxIPOGimLHRdspOO4nZC0D11FYYfxLxzJxN/NxA07Y3bbeDrIt5c9zUVz/kpvOnjY2i38lR3ka60VwJPAxcWQNojLi+EjubNsGb3CJiZCCJ+0Pg6zVLgAWAV0Aa8WdQOt+XlkMe/YNXSKElwE0ietj8NI3POAx4EyoAZ4DbgVGNIGhLRDULvYKJ+0Pg4rceuA/wasDBeBmcB1wINZ5f0gjJZIigDCb0sf7wFxbwTGFzjncuAzuYUaKNUp1ganstGuJ6QdvzV9FIOKsSTueUOcd1EuaSM6zT6rnO9EV5AStu+MfUhhiaL6vQb4NPBH4KqxJG5psaNE44W/WmU510XPY4tVS9ifbT+U0EBbIjLYKWXAPcB6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';
  540.  
  541.                 var pageContent = function (data) {
  542.                     // HEADER
  543.                     doc.setFontSize(18);
  544.                     doc.setTextColor(40);
  545.                     doc.setFontStyle('normal');
  546.                     if (options.data.datas.loadedImg) {
  547.                         //doc.addImage(options.data.datas.loadedImg, options.data.datas.logo.fileType, data.settings.margin.left, 10, 75, 25);
  548.  
  549.                     }
  550.                     if (options.data.Header1) {
  551.                         var Header = options.data.Header1;
  552.                         var Semicolon = " : ";
  553.                         var Content = options.data.Content1;
  554.                         doc.setFontSize(9);
  555.                         doc.setTextColor(40);
  556.                         var xOffset = (doc.internal.pageSize.width / 2) - (doc.getStringUnitWidth(Semicolon) * doc.internal.getFontSize() / 2);
  557.                         doc.text(Header, data.settings.margin.left, 50);
  558.                         doc.text(Semicolon, xOffset - 175, 50);
  559.                         doc.text(Content, xOffset - 110, 50);
  560.                     }
  561.                     if (options.data.Header2) {
  562.                         var Header = options.data.Header2;
  563.                         var Semicolon = " : ";
  564.                         var Content = options.data.Content2;
  565.                         doc.setFontSize(9);
  566.                         doc.setTextColor(40);
  567.                         var xOffset = (doc.internal.pageSize.width / 2) - (doc.getStringUnitWidth(Semicolon) * doc.internal.getFontSize() / 2);
  568.                         doc.text(Header, data.settings.margin.left, 60);
  569.                         doc.text(Semicolon, xOffset - 175, 60);
  570.                         doc.text(Content, xOffset - 110, 60);
  571.                     }
  572.                     if (options.data.Header3) {
  573.  
  574.                         var Header = options.data.Header3;
  575.                         var Semicolon = " : ";
  576.                         var Content = options.data.Content3.toString();
  577.                         doc.setFontSize(9);
  578.                         doc.setTextColor(40);
  579.                         var xOffset = (doc.internal.pageSize.width / 2) - (doc.getStringUnitWidth(Semicolon) * doc.internal.getFontSize() / 2);
  580.                         doc.text(Header, data.settings.margin.left, 70);
  581.