private void button1_Click(object sender, EventArgs e) { // Creates a pdf document PdfDocument doc = new PdfDocument(); // Creates a new page PdfPageBase page = doc.Pages.Add(); string s1 = "Spire.PDF for .NET is a professional PDF component applied to creating, writing, " + "editing, handling and reading PDF files without any external dependencies within " + ".NET application. Using this .NET PDF library, you can implement rich capabilities " + "to create PDF files from scratch or process existing PDF documents entirely through " + "C#/VB.NET without installing Adobe Acrobat."; string s2 = "Many rich features can be supported by the .NET PDF API, such as security setting " + "(including digital signature), PDF text/attachment/image extract, PDF merge/split " + ", metadata update, section, graph/image drawing and inserting, table creation and " + "processing, and importing data etc.Besides, Spire.PDF for .NET can be applied to easily " + "converting Text, Image and HTML to PDF with C#/VB.NET in high quality."; // Get width and height of page float pageWidth = page.GetClientSize().Width; float pageHeight = page.GetClientSize().Height; PdfBrush brush = PdfBrushes.Black; PdfFont font = new PdfFont(PdfFontFamily.TimesRoman, 12f); PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Justify); // Draw text page.Canvas.DrawString(s1, font, brush, new RectangleF(0, 20, pageWidth / 2 - 8f, pageHeight), format); page.Canvas.DrawString(s2, font, brush, new RectangleF(pageWidth / 2 + 8f, 20, pageWidth / 2 - 8f, pageHeight), format); String result = "CreateTwoColumnPDF_out.pdf"; //Save the document doc.SaveToFile(result); //Launch the Pdf file PDFDocumentViewer(result); }
/// <summary> /// Add the defalut lessons to the document, based on the lesson templates. creates its pages itself /// </summary> /// <param name="document"></param> private void AddLessons(PdfDocument document) { List <LessonTemplate> templates = DataAccess.DatabaseParser.GetTemplatesList(); float y = 10; SizeF size; PdfPageBase page = CreatePage(document); page.Canvas.DrawString("OBS!", DesignSchemes.FontScheme.PdfOBSTitleFont, DesignSchemes.ColorScheme.PdfBlackText, 0, y); y += DesignSchemes.FontScheme.PdfOBSTitleFont.MeasureString("OBS!").Height; string text = "For at komme op til teoriprøve skal dine papirer (ansøgningsskema, \r\n lægeerklæring og førstehjælps bevis) være afleveret til kørelæreren. " + "\r\nLægeerklæringen, SKAL være fra egen læge, og må MAX være 3 måneden gammel!" + "\r\nFørstehjælps kurset MAX 1 år gammel!\r\n"; page.Canvas.DrawString(text, DesignSchemes.FontScheme.PdfOBSTextFont, DesignSchemes.ColorScheme.PdfBlackText, 0, y); y += DesignSchemes.FontScheme.PdfOBSTextFont.MeasureString(text).Height; foreach (LessonTemplate template in templates) { if (y >= page.Canvas.ClientSize.Height - 280) { page = CreatePage(document); y = 10; } if (templates.IndexOf(template) == 9) { page.Canvas.DrawString("OBS!", DesignSchemes.FontScheme.PdfOBSTitleFont, DesignSchemes.ColorScheme.PdfBlackText, 0, y); y += DesignSchemes.FontScheme.PdfOBSTitleFont.MeasureString("OBS").Height; text = "Nu er det på tide at tænke på at bestille teoriprøve!\r\nHvis du kan nå lektionerne til og med Teorilektion 7, inden for de næste ca. 2 uger,\r\n kan du bestille teoriprøve via din kørelærer!\r\n"; page.Canvas.DrawString(text, DesignSchemes.FontScheme.PdfOBSTextFont, DesignSchemes.ColorScheme.PdfBlackText, 0, y); y += DesignSchemes.FontScheme.PdfOBSTextFont.MeasureString(text).Height; text = "Men kun hvis du HAR afleveret papirerne, ellers er det på høje tid at få dem afleveret!!!"; page.Canvas.DrawString(text, DesignSchemes.FontScheme.PdfOBSTextUnderlineFont, DesignSchemes.ColorScheme.PdfBlackText, 0, y); y += DesignSchemes.FontScheme.PdfOBSTextUnderlineFont.MeasureString(text).Height; text = "Husk også at få betalt det gebyr til prøverne, som du har fået via E-Boks"; page.Canvas.DrawString(text, DesignSchemes.FontScheme.PdfOBSTextUnderlineFatFont, DesignSchemes.ColorScheme.PdfBlackText, page.Canvas.ClientSize.Width / 2, y, new PdfStringFormat(PdfTextAlignment.Center)); y += DesignSchemes.FontScheme.PdfOBSTextUnderlineFatFont.MeasureString(text).Height; } else if (templates.IndexOf(template) == 12) { page.Canvas.DrawString("OBS", DesignSchemes.FontScheme.PdfOBSTitleFont, DesignSchemes.ColorScheme.PdfBlackText, 0, y); y += DesignSchemes.FontScheme.PdfOBSTitleFont.MeasureString("OBS!").Height; text = "Medbring dit ansøgningsskema, og få det underskrevet af kørelæreren i teorilektion 7!"; page.Canvas.DrawString(text, DesignSchemes.FontScheme.PdfOBSTextFont, DesignSchemes.ColorScheme.PdfBlackText, 0, y); y += DesignSchemes.FontScheme.PdfOBSTextFont.MeasureString(text).Height; } else if (template.Title == "KØRETEKNISK KURUS") { page.Canvas.DrawString("OBS! Lektionerne hertil skal gennemføres inden teoriprøven.", DesignSchemes.FontScheme.PdfOBSTitleFont, DesignSchemes.ColorScheme.PdfBlackText, 0, y); y += DesignSchemes.FontScheme.PdfOBSTitleFont.MeasureString("OBS").Height; text = "Dit ansøgningsskema skal underskrives af teorilæreren i teorilektion 7 + af din \r\nkørelærer i skolevognen, inden du kan komme til teoriprøve!"; page.Canvas.DrawString(text, DesignSchemes.FontScheme.PdfOBSTextUnderlineFont, DesignSchemes.ColorScheme.PdfBlackText, 0, y); y += DesignSchemes.FontScheme.PdfOBSTextUnderlineFont.MeasureString(text).Height; text = "Husk pas, lektionsplan og ansøgningsskema til både teori- og køreprøve."; page.Canvas.DrawString(text, DesignSchemes.FontScheme.PdfOBSTextFont, DesignSchemes.ColorScheme.PdfBlackText, 0, y); y += DesignSchemes.FontScheme.PdfOBSTextFont.MeasureString(text).Height; text = "De efterfølgende lektioner behøver ikke nødvendigvis at være i rækkefølge!"; page.Canvas.DrawString(text, DesignSchemes.FontScheme.PdfOBSTextUnderlineFont, DesignSchemes.ColorScheme.PdfBlackText, page.Canvas.ClientSize.Width / 2, y, new PdfStringFormat(PdfTextAlignment.Center)); y += DesignSchemes.FontScheme.PdfOBSTextUnderlineFont.MeasureString(text).Height; } page.Canvas.DrawString(template.Title, DesignSchemes.FontScheme.PdfTitleFont, DesignSchemes.ColorScheme.PdfBlackText, x: 0, y: y); size = DesignSchemes.FontScheme.PdfTitleFont.MeasureString(template.Title); y += size.Height; page.Canvas.DrawString(template.Reading, DesignSchemes.FontScheme.PdfHeaderFont, DesignSchemes.ColorScheme.PdfBlackText, x: size.Width + 5, y: y - 20); PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left); format.LineSpacing = 20f; PdfStringLayouter stringLayout = new PdfStringLayouter(); PdfStringLayoutResult description = stringLayout.Layout(template.Description, DesignSchemes.FontScheme.PdfTextFont, format, new SizeF(page.GetClientSize().Width, 0)); foreach (LineInfo line in description.Lines) { page.Canvas.DrawString(line.Text, DesignSchemes.FontScheme.PdfTextFont, DesignSchemes.ColorScheme.PdfBlackText, 0, y, format); y += description.LineHeight; } y += 10; PdfGrid grid = new PdfGrid { Style = { CellPadding = new PdfPaddings(1, 1, 1, 1) } }; grid.Columns.Add(2); grid.Columns[0].Width = page.Canvas.ClientSize.Width * 0.20f; grid.Columns[1].Width = page.Canvas.ClientSize.Width * 0.80f; List <string> data = new List <string>() { $" Dato:;Tidsforbug:\t\t\t{template.Time} x 45 min.", " Elev underskrift:; ", " Kørelære underskrift:\t\t\t\t+ banens stempel; " }; foreach (string s in data) { string[] cols = s.Split(';'); PdfGridRow row = grid.Rows.Add(); row.Style.Font = DesignSchemes.FontScheme.PdfTextFont; for (int i = 0; i < 2; i++) { row.Cells[i].Value = cols[i]; if (data.IndexOf(s) > 0) { row.Height += 10; } } } PdfLayoutResult result = grid.Draw(page, 0, y); y += result.Bounds.Height + 10; } }