With the following code I create a PDF document from a grouping control.
For orientation I have set Landscape.
Without header and footer this works.
If I want to work with header (pdfConverter.ShowHeader = true;) only portrait is created and the rest is cut off.
Also, the first page is an empty page (with header). Also between the pages one or more empty pages (with header only) are created.
What can I do?
Translated with www.DeepL.com/Translator (free version)
Here my code:
private static string Caption = string.Empty;
private static string formName = string.Empty;
private static GridPDFConverter pdfConverter = null;
public static void ReportToPDF(GridControlBase grdAnzeige, Form form, string caption, bool landscape = false)
{
Caption = caption;
formName = form.Name;
SaveFileDialog dlgSave = new SaveFileDialog();
dlgSave.Filter = "PDF-Dokumente|*.pdf";
dlgSave.AddExtension = true;
dlgSave.DefaultExt = ".pdf"; // Default file extension
dlgSave.Title = "Speichern als PDF-Datei";
dlgSave.FileName = "Untitled";
form.Invalidate();
Application.DoEvents();
if (dlgSave.ShowDialog() != DialogResult.Cancel)
{
form.Cursor = Cursors.WaitCursor;
pdfConverter = new GridPDFConverter();
PdfDocument pdfdoc = new PdfDocument();
PdfLayoutFormat format = new PdfLayoutFormat();
if (landscape)
pdfdoc.PageSettings.Orientation = PdfPageOrientation.Landscape;
else
pdfdoc.PageSettings.Orientation = PdfPageOrientation.Portrait;
pdfConverter.Exporting += new GridPDFConverter.PDFExportingEventHandler(pdfConverter_Exporting);
pdfConverter.DrawPDFHeader += new GridPDFConverter.DrawPDFHeaderFooterEventHandler(pdfConverter_DrawPDFHeader);
pdfConverter.DrawPDFFooter += new GridPDFConverter.DrawPDFHeaderFooterEventHandler(pdfConverter_DrawPDFFooter);
//pdfConverter.ShowFooter = true;
pdfConverter.ShowHeader = true;
format.Layout = PdfLayoutType.OnePage;
pdfConverter.ExportToPdf(dlgSave.FileName, grdAnzeige);
System.Diagnostics.Process.Start(dlgSave.FileName); //Launching the PDF file using the default Application.[Acrobat Reader]
pdfConverter.Exporting -= new GridPDFConverter.PDFExportingEventHandler(pdfConverter_Exporting);
pdfConverter.DrawPDFHeader -= new GridPDFConverter.DrawPDFHeaderFooterEventHandler(pdfConverter_DrawPDFHeader);
pdfConverter.DrawPDFFooter -= new GridPDFConverter.DrawPDFHeaderFooterEventHandler(pdfConverter_DrawPDFFooter);
}
}
private static void pdfConverter_Exporting(object sender, PDFExportingEventArgs e)
{
if (e.PdfDocument.PageSettings.Orientation == PdfPageOrientation.Landscape)
e.PdfDocument.PageSettings.Width = 870;
//else
// e.PdfDocument.PageSettings.Width = 700;
}
//create the pdf header
private static void pdfConverter_DrawPDFHeader(object sender, PDFHeaderFooterEventArgs e)
{
PdfPageTemplateElement header = e.HeaderFooterTemplate;
PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 24);
float doubleHeight = font.Height * 2;
Color activeColor = Color.FromArgb(44, 71, 120);
SizeF imageSize = new SizeF(110f, 35f);
PdfSolidBrush brush = new PdfSolidBrush(activeColor);
PdfPen pen = new PdfPen(Color.Black, 3f);
font = new PdfStandardFont(PdfFontFamily.Helvetica, 16, PdfFontStyle.Bold);
//Set formattings for the text
PdfStringFormat format = new PdfStringFormat();
format.Alignment = PdfTextAlignment.Center;
format.LineAlignment = PdfVerticalAlignment.Middle;
//Draw title
header.Graphics.DrawString(Caption, font, brush, new RectangleF(0, 0, header.Width, header.Height), format);
brush = new PdfSolidBrush(Color.Gray);
font = new PdfStandardFont(PdfFontFamily.Helvetica, 6, PdfFontStyle.Bold);
format = new PdfStringFormat();
format.Alignment = PdfTextAlignment.Left;
format.LineAlignment = PdfVerticalAlignment.Bottom;
//Draw some lines in the header
pen = new PdfPen(Color.Black, 0.7f);
header.Graphics.DrawLine(pen, 0, 0, header.Width, 0);
pen = new PdfPen(Color.Black, 2f);
header.Graphics.DrawLine(pen, 0, 03, header.Width + 3, 03);
pen = new PdfPen(Color.Black, 2f);
header.Graphics.DrawLine(pen, 0, header.Height - 3, header.Width, header.Height - 3);
header.Graphics.DrawLine(pen, 0, header.Height, header.Width, header.Height);
}
private static void pdfConverter_DrawPDFFooter(object sender, PDFHeaderFooterEventArgs e)
{
PdfPageTemplateElement footer = e.HeaderFooterTemplate;
PdfSolidBrush brush = new PdfSolidBrush(Color.Black);
PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 18, PdfFontStyle.Bold);
PdfStringFormat format = new PdfStringFormat();
format.Alignment = PdfTextAlignment.Center;
format.LineAlignment = PdfVerticalAlignment.Bottom;
footer.Graphics.DrawString(DateTime.Now.ToShortDateString(), font, brush, new RectangleF(40, footer.Height - 20, footer.Width, footer.Height), format);
format = new PdfStringFormat();
format.Alignment = PdfTextAlignment.Right;
format.LineAlignment = PdfVerticalAlignment.Bottom;
//Create page number field
PdfPageNumberField pageNumber = new PdfPageNumberField(font, brush);
//Create page count field
PdfPageCountField count = new PdfPageCountField(font, brush);
string page = Localization.GetTranslation(formName, "Seite");
string from = Localization.GetTranslation(formName, "von");
string temp = string.Format("{0} {1} {2} {3}", page, pageNumber, from, count);
PdfCompositeField compositeField = new PdfCompositeField(font, brush, temp);
compositeField.Bounds = footer.Bounds;
compositeField.Draw(footer.Graphics, new PointF(400, footer.Height - 20));
}