- 
                            Data Grids / Data Management- 
                Data Grid- Overview
- 
                Data Binding
- 
                Filtering
- Sorting
- 
                Editing
- 
                Grouping
- 
                Selection
- Focused Row
- Paging
- 
                Scrolling
- 
                Columns
- 
                Master-Detail
- 
                Data Summaries
- 
                Drag & Drop
- 
                Export to PDF
- 
                Export to Excel
- Appearance
- 
                Customization
- State Persistence
- 
                Adaptability
- 
                Keyboard Navigation
- Right-To-Left Support
 
- 
                Tree List- Overview
- 
                Data Binding
- 
                Filtering
- Sorting
- 
                Editing
- 
                Selection
- Focused Row
- Paging
- 
                Columns
- Drag & Drop
- State Persistence
- Adaptability
- 
                Keyboard Navigation
 
- 
                Card View
- 
                Pivot Grid- Overview
- 
                Data Binding
- 
                Field Management
- 
                Data Summaries
- Drill Down
- Filtering
- 
                Scrolling
- 
                Export to Excel
- Chart Integration
- Customization
- State Persistence
 
- 
                Filter Builder
 
- 
                
- 
                            Data Visualization- 
                Charts- Overview
- 
                Data Binding
- 
                Common Concepts- 
                Axis
- 
                Aggregation
- 
                Tooltips
- 
                Selection
- 
                Customization
- 
                Zooming
- 
                Export
 
- 
                
- 
                Area Charts
- 
                Bar Charts
- Bullet Charts
- 
                Doughnut Charts
- 
                Financial Charts
- 
                Funnel and Pyramid Charts
- 
                Line Charts
- Pareto Chart
- 
                Pie Charts
- 
                Point Charts
- 
                Polar and Radar Charts
- 
                Range Charts
- Sankey Chart
- 
                Sparkline Charts
- 
                Tree Map
 
- 
                Gauges- Overview
- 
                Runtime update
- 
                Bar Gauge
- 
                Circular Gauge
- 
                Linear Gauge
 
- 
                Diagram- Overview
- 
                Data Binding
- 
                Featured Shapes
- 
                Custom Shapes
- 
                Document Capabilities
- 
                User Interaction
- UI Customization
- Adaptability
 
 
- 
                
- 
                            Scheduling / Planning- 
                Scheduler- Overview
- 
                Data Binding
- 
                Views
- 
                Appointments
- 
                Timetable
- Editing
- 
                Grouping
- Virtual Scrolling
- Drag & Drop
- 
                Customization
- Adaptability
 
- 
                Gantt- Overview
- Data Binding
- 
                Filtering
- Sorting
- Strip Lines
- Export to PDF
- Validation
- 
                Customization
 
 
- 
                
- 
                            Reporting- 
                AI-powered Extensions
- 
                Interaction
- 
                Report Types
- 
                Data binding
- 
                Real-life Reports
- 
                Layout Features
- 
                Report Controls
- 
                Web-specific Features
 
- 
                
- 
                            Rich Text Editor- Overview
- Load/Save
- Document Protection
- 
                Templates
- Autocorrect
- 
                Customization
- Simple View
 
- 
                            Spreadsheet- Overview
- 
                Open a Document
- Export And Printing
- 
                Features
- 
                UI Customization
 
- 
                            Messaging
- 
                            WYSIWYG Editor
- 
                            Forms
- 
                            Data Editors- Overview
- 
                Common Concepts
- 
                Calendar
- Check Box
- Color Box
- Date Box
- 
                Date Range Box
- 
                Number Box
- Radio Group
- 
                Range Selector
- Range Slider
- Slider
- Speech To Text
- Switch
- Text Area
- Text Box
 
- 
                            Drop-Downs- Autocomplete
- 
                Drop Down Box
- 
                Select Box
- 
                Tag Box
- 
                Lookup
 
- 
                            Buttons
- 
                            File Upload / File Management- 
                File Manager- Overview
- 
                File System Types
- 
                Customization
 
- 
                File Uploader
 
- 
                
- 
                            Popup and Notifications
- 
                            Navigation- Overview
- Accordion
- 
                Context Menu
- 
                Menu
- Multi View
- 
                Drawer
- 
                Tab Panel
- 
                Tabs
- 
                Toolbar
- 
                Stepper
- Pagination
- 
                List
- 
                Tree View
- Right-to-Left Support
 
- 
                            Layout- 
                Tile View
- Splitter
- 
                Gallery
- Scroll View
 
- 
                
- 
                            Interactive Wrappers- 
                Sortable
- Resizable
 
- 
                
- 
                            Progress Indicators
- 
                            Maps- Overview
- 
                Map
- 
                Vector Map- 
                Data Binding
- Multiple Layers
- 
                Markers
- Legend
- 
                Zooming and Panning
- 
                Customization
 
- 
                
 
- 
                            Localization
Related Demos:
        
            Your search did not match any results.
        
    Data Grid - Header and Footer
The DataGrid allows you to customize a header and a footer in the exported PDF file.
            
            Backend API
        
    @using DevExtreme.NETCore.Demos.Models
@model IEnumerable<CountryPopulationAndGDP>
@section ExternalDependencies {
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/3.0.1/jspdf.umd.min.js"></script>
    <script>
        window.jsPDF = window.jspdf.jsPDF;
    </script>
}
<div class="long-title"><h3>Country Area, Population, and GDP Structure</h3></div>
@(Html.DevExtreme().DataGrid<CountryPopulationAndGDP>()
    .ID("gridContainer")
    .DataSource(Model, "ID")
    .ShowBorders(true)
    .Columns(c =>
    {
        c.AddFor(m => m.Country);
        c.AddFor(m => m.Area);
        c.Add()
            .Caption("Population")
            .Columns(a =>
            {
                a.AddFor(m => m.Population_Total)
                    .Format(Format.FixedPoint);
                a.AddFor(m => m.Population_Urban)
                    .Format(Format.Percent);
            });
        c.Add()
        .Caption("Nominal GDP")
        .Columns(a =>
        {
            a.AddFor(m => m.GDP_Total)
                    .Format(Format.FixedPoint)
                    .SortOrder(SortOrder.Desc);
            a.Add()
                    .Caption("By Sector")
                    .Columns(b =>
                        {
                            b.AddFor(m => m.GDP_Agriculture)
                                .Width(95)
                                .Format(f => f.Type(Format.Percent).Precision(1));
                            b.AddFor(m => m.GDP_Industry)
                                .Width(80)
                                .Format(f => f.Type(Format.Percent).Precision(1));
                            b.AddFor(m => m.GDP_Services)
                                .Width(85)
                                .Format(f => f.Type(Format.Percent).Precision(1));
                        });
        });
    })
    .Export(e => e.Enabled(true).Formats(new[] { "pdf" }))
    .OnExporting("exportToPDF")
)
<script>
    function exportToPDF(e) {
        const doc = new jsPDF();
        const lastPoint = { x: 0, y: 0};
        DevExpress.pdfExporter.exportDataGrid({
            jsPDFDocument: doc,
            component: e.component,
            topLeft: { x: 1, y: 15 },
            columnWidths: [30, 20, 30, 15, 22, 22, 20, 20],
            customDrawCell({ rect }) {
                if (lastPoint.x < rect.x + rect.w) {
                    lastPoint.x = rect.x + rect.w;
                }
                if (lastPoint.y < rect.y + rect.h) {
                    lastPoint.y = rect.y + rect.h;
                }
            },
        }).then(() => {
            const header = 'Country Area, Population, and GDP Structure';
            const pageWidth = doc.internal.pageSize.getWidth();
            doc.setFontSize(15);
            const headerWidth = doc.getTextDimensions(header).w;
            doc.text(header, (pageWidth - headerWidth) / 2, 20);
            const footer = 'www.wikipedia.org';
            doc.setFontSize(9);
            doc.setTextColor('#cccccc');
            const footerWidth = doc.getTextDimensions(footer).w;
            doc.text(footer, (lastPoint.x - footerWidth), lastPoint.y + 5);
            doc.save('Companies.pdf');
        });
    }
</script>
        
        using DevExtreme.NETCore.Demos.Models;
using DevExtreme.NETCore.Demos.Models.DataGrid;
using DevExtreme.NETCore.Demos.Models.SampleData;
using Microsoft.AspNetCore.Mvc;
using System.Linq;
namespace DevExtreme.NETCore.Demos.Controllers {
    public class DataGridController : Controller {
        public ActionResult PDFHeaderAndFooter() {
            return View(SampleData.CountriesPopulationAndGDP);
        }
    }
}
        
        using System.Collections.Generic;
namespace DevExtreme.NETCore.Demos.Models.SampleData {
    public partial class SampleData {
        public static readonly IEnumerable<CountryPopulationAndGDP> CountriesPopulationAndGDP = new[] {
            new CountryPopulationAndGDP {
                ID = 1,
                Country = "Brazil",
                Area = 8515767,
                Population_Urban = 0.85,
                Population_Rural = 0.15,
                Population_Total = 205809000,
                GDP_Agriculture = 0.054,
                GDP_Industry = 0.274,
                GDP_Services = 0.672,
                GDP_Total = 2353025 },
            new CountryPopulationAndGDP {
                ID = 2,
                Country = "China",
                Area = 9388211,
                Population_Urban = 0.54,
                Population_Rural = 0.46,
                Population_Total = 1375530000,
                GDP_Agriculture = 0.091,
                GDP_Industry = 0.426,
                GDP_Services = 0.483,
                GDP_Total = 10380380 },
            new CountryPopulationAndGDP {
                ID = 3,
                Country = "France",
                Area = 675417,
                Population_Urban = 0.79,
                Population_Rural = 0.21,
                Population_Total = 64529000,
                GDP_Agriculture = 0.019,
                GDP_Industry = 0.183,
                GDP_Services = 0.798,
                GDP_Total = 2846889 },
            new CountryPopulationAndGDP {
                ID = 4,
                Country = "Germany",
                Area = 357021,
                Population_Urban = 0.75,
                Population_Rural = 0.25,
                Population_Total = 81459000,
                GDP_Agriculture = 0.008,
                GDP_Industry = 0.281,
                GDP_Services = 0.711,
                GDP_Total = 3859547 },
            new CountryPopulationAndGDP {
                ID = 5,
                Country = "India",
                Area = 3287590,
                Population_Urban = 0.32,
                Population_Rural = 0.68,
                Population_Total = 1286260000,
                GDP_Agriculture = 0.174,
                GDP_Industry = 0.258,
                GDP_Services = 0.569,
                GDP_Total = 2047811 },
            new CountryPopulationAndGDP {
                ID = 6,
                Country = "Italy",
                Area = 301230,
                Population_Urban = 0.69,
                Population_Rural = 0.31,
                Population_Total = 60676361,
                GDP_Agriculture = 0.02,
                GDP_Industry = 0.242,
                GDP_Services = 0.738,
                GDP_Total = 2147952 },
            new CountryPopulationAndGDP {
                ID = 7,
                Country = "Japan",
                Area = 377835,
                Population_Urban = 0.93,
                Population_Rural = 0.07,
                Population_Total = 126920000,
                GDP_Agriculture = 0.012,
                GDP_Industry = 0.275,
                GDP_Services = 0.714,
                GDP_Total = 4616335 },
            new CountryPopulationAndGDP {
                ID = 8,
                Country = "Russia",
                Area = 17098242,
                Population_Urban = 0.74,
                Population_Rural = 0.26,
                Population_Total = 146544710,
                GDP_Agriculture = 0.039,
                GDP_Industry = 0.36,
                GDP_Services = 0.601,
                GDP_Total = 1857461 },
            new CountryPopulationAndGDP {
                ID = 9,
                Country = "United States",
                Area = 9147420,
                Population_Urban = 0.81,
                Population_Rural = 0.19,
                Population_Total = 323097000,
                GDP_Agriculture = 0.0112,
                GDP_Industry = 0.191,
                GDP_Services = 0.797,
                GDP_Total = 17418925 },
            new CountryPopulationAndGDP {
                ID = 10,
                Country = "United Kingdom",
                Area = 244820,
                Population_Urban = 0.82,
                Population_Rural = 0.18,
                Population_Total = 65097000,
                GDP_Agriculture = 0.007,
                GDP_Industry = 0.21,
                GDP_Services = 0.783,
                GDP_Total = 2945146
            }
        };
    }
}
        
        #gridContainer sup {
  font-size: 0.8em;
  vertical-align: super;
  line-height: 0;
}
.long-title h3 {
  font-family: 'Segoe UI Light', 'Helvetica Neue Light', 'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana;
  font-weight: 200;
  font-size: 28px;
  text-align: center;
  margin-bottom: 20px;
}
        
                Follow the steps below to configure a header/footer:
- 
Call the exportDataGrid(options) method. 
- 
Use the following API to specify header/footer layout settings: - 
For a header 
 Use the topLeft object to specify a start position for DataGrid export. This position should be below the header.
- 
For a footer 
 Use the customDrawCell function to calculate the coordinates of the last right cell of the DataGrid.
 
- 
- 
Execute a promise after the exportDataGrid(options) method. In this promise, specify position and appearance of the header/footer.