New to Kendo UI for jQuery? Download free 30-day trial

Export All Pages and the Full Page Content of the Data Grid to PDF

Environment

Product Progress® Kendo UI® Grid for jQuery
Preferred Language JavaScript

Description

How can I export all Kendo UI Data Grid pages and their full page content in a PDF file?

Solution

The following example demonstrates how to export all Grid pages and their full page content in a PDF file.

    <button class="k-button">Export Grid</button>
    <div id="header">
        <h1>Export Grid</h1>
    </div>
    <div id="grid"></div>
    <div id="footer"></div>
    <script>
        $("button").on("click", function() {
            var grid = $("#grid").data("kendoGrid");
            var progress = $.Deferred();

            kendo.drawing.drawDOM($("#header"))
            .done(function(header) {
              kendo.drawing.drawDOM($("#footer"))
              .done(function(footer) {
                grid._drawPDF(progress)
                .then(function(root) {
                  root.children.unshift(header);
                  root.children.push(footer);
                  return kendo.drawing.exportPDF(root, { multiPage: true });
                })
                .done(function(dataURI) {
                  kendo.saveAs({
                    dataURI: dataURI,
                    fileName: "test.pdf"
                  });
                  progress.resolve();
                })
              });
            })
        });
      $("#header").kendoChart({
        legend: {
          position: "bottom"
        },
        dataSource: {
          data: [{
            "source": "Approved",
            "percentage": 237
          }, {
            "source": "Rejected",
            "percentage": 112
          }],
        },
        series: [{
          type: "donut",
          field: "percentage",
          categoryField: "source"
        }],
        chartArea: {
          background: "none"
        },
        tooltip: {
          visible: true,
          template: "${ category } - ${ value } applications"
        }
      });

      $("#footer").kendoChart({
        legend: {
          visible: false
        },
        seriesDefaults: {
          type: "column"
        },
        series: [{
          name: "Users Reached",
          data: [340, 894, 1345, 1012, 3043, 2013, 2561, 2018, 2435, 3012]
        }, {
          name: "Applications",
          data: [50, 80, 120, 203, 324, 297, 176, 354, 401, 349]
        }],
        valueAxis: {
          labels: {
            visible: false
          },
          line: {
            visible: false
          },
          majorGridLines: {
            visible: false
          }
        },
        categoryAxis: {
          categories: [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011],
          line: {
            visible: false
          },
          majorGridLines: {
            visible: false
          }
        },
        chartArea: {
          background: "none"
        },
        tooltip: {
          visible: true,
          format: "{0}",
          template: "#= series.name #: #= value #"
        }
      });

      $("#grid").kendoGrid({
        pdf: {
          allPages: true
        },
        dataSource: {
          type: "odata",
          transport: {
            read: {
              url: "//demos.telerik.com/kendo-ui/service/Northwind.svc/Employees",
            }
          },
          pageSize: 5
        },
        columns: [
          { field: "FirstName" },
          { field: "LastName"},
          { field: "Title" },
          { field: "Country "}
        ],
        height: 300,
        scrollable: true,
        pageable: true
      });
    </script>

See Also

In this article