Tutorial:
The tutorial source code (C#, VB.NET) is available for download.
Basic Gantt configuration (ASP.NET):
<DayPilot:DayPilotScheduler runat="server" ID="GanttControl" ViewType="Gantt" Scale="Day" > <TimeHeaders> <DayPilot:TimeHeader GroupBy="Month" Format="MMMM yyyy" /> <DayPilot:TimeHeader GroupBy="Cell" /> </TimeHeaders> <HeaderColumns> <DayPilot:RowHeaderColumn Title="Task" Width="120" /> <DayPilot:RowHeaderColumn Title="Duration" Width="90" /> </HeaderColumns> </DayPilot:DayPilotScheduler>
The PDF export method uses the open-source PDFSharp library to create the PDF file (C#):
private void ExportToPdf() { // create a new PDF document PdfDocument doc = new PdfDocument(); doc.Info.Title = "Gantt Chart PDF Export"; doc.Info.Author = "DayPilot"; // add a page PdfPage page = doc.AddPage(); // set PDF page properties (size and orientation) page.Size = (PageSize) Enum.Parse(typeof (PageSize), ListPageSize.SelectedValue); page.Orientation = (PageOrientation)Enum.Parse(typeof(PageOrientation), ListPageOrientation.SelectedValue); // create graphics object for PDF page modification XGraphics gfx = XGraphics.FromPdfPage(page); // write title XRect titleRect = new XRect(new XPoint(), gfx.PageSize); titleRect.Inflate(-10, -15); XFont font = new XFont("Tahoma", 14, XFontStyle.Bold); gfx.DrawString("DayPilot Gantt PDF Export", font, XBrushes.DarkGray, titleRect, XStringFormats.TopCenter); // create the Gantt image SetDataSourceAndBind(); SetExportProperties(); Bitmap bitmap = GanttControl.ExportBitmap(); // add the image to the PDF page XImage image = XImage.FromGdiPlusImage(bitmap); XRect imageRect = GetPaddedRectForImage(gfx, image, 10); double y = 40; imageRect.Y = y; gfx.DrawImage(image, imageRect); // save the PDF file to MemoryStream MemoryStream mem = new MemoryStream(); doc.Save(mem, false); // send the output stream to the browser Response.Clear(); Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "attachment;filename=gantt.pdf"); mem.WriteTo(Response.OutputStream); Response.End(); }