Exporting data to a PDF file is one of the most commonly preferred features in the .NET world. The essential ComponentOne TrueDbGrid for WinForms control has in-built support for PDF export. ExportToPDF method provides support for exporting data from a C1TrueDbGrid control to a PDF file. However, using ExportToPDF() method we can't export multiple C1TrueDbGrids to a single PDF file.

Hence, in this blog we will discuss an approach to export multiple ComponentOne TrueDbGrids for WinForms to a single PDF file. It's a two step procedure:-

1. Export C1TrueDbGrids to 'c1d' files


After binding multiple C1TrueDbGrid we need to save them to 'c1d' files separately.


 c1TrueDBGrid1.PrintInfo.SaveAsC1d("1.c1d");
 c1TrueDBGrid2.PrintInfo.SaveAsC1d("2.c1d");

2. Use C1PrintDocument to load and save 'c1d' files to PDF


Then use multiple C1PrintDocuments to load 'c1d' files separately and then combine RenderObjects of those multiple C1PrintDocuments in a single C1PrintDocument and export it to a PDF file.


 C1PrintDocument doc1 = new C1PrintDocument();
 doc1.Load("1.c1d", C1DocumentFormatEnum.C1d);

 C1PrintDocument doc2 = new C1PrintDocument();
 doc2.Load("2.c1d", C1DocumentFormatEnum.C1d);

 // the combined document:
 C1PrintDocument doc = new C1PrintDocument();
 // add 1st document:
 while (doc1.Body.Children.Count > 0)
  {
     RenderObject ro = doc1.Body.Children[0];
     // a render object cannot have two parents at once, so removed from original parent first:
     doc1.Body.Children.RemoveAt(0);
     // now add to the combined doc:
     doc.Body.Children.Add(ro);
  }
  // ensure a page break between the two documents:
  doc.Body.Children.Add(new RenderEmpty(BreakEnum.Page));
  // add 2nd document:
  while (doc2.Body.Children.Count > 0)
   {
     RenderObject ro = doc2.Body.Children[0];
     doc2.Body.Children.RemoveAt(0);
     doc.Body.Children.Add(ro);
   }
     doc.Export("CombinedPDF.pdf", true);
     System.Diagnostics.Process.Start("CombinedPDF.pdf");


This concludes our blog. You can download the samples for detailed implementation.

DownloadSample_CS
DownloadSample_VB