private void DrawPage(PdfPageBase page) { float pageWidth = page.Canvas.ClientSize.Width; float y = 0; //title y = y + 5; PdfBrush brush2 = new PdfSolidBrush(Color.Black); PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 16f, FontStyle.Bold)); PdfStringFormat format2 = new PdfStringFormat(PdfTextAlignment.Center); format2.CharacterSpacing = 1f; String text = "Summary of Science"; page.Canvas.DrawString(text, font2, brush2, pageWidth / 2, y, format2); SizeF size = font2.MeasureString(text, format2); y = y + size.Height + 6; //icon PdfImage image = PdfImage.FromFile(@"..\..\..\..\..\..\Data\Wikipedia_Science.png"); page.Canvas.DrawImage(image, new PointF(pageWidth - image.PhysicalDimension.Width, y)); float imageLeftSpace = pageWidth - image.PhysicalDimension.Width - 2; float imageBottom = image.PhysicalDimension.Height + y; //refenrence content PdfTrueTypeFont font3 = new PdfTrueTypeFont(new Font("Arial", 9f)); PdfStringFormat format3 = new PdfStringFormat(); format3.ParagraphIndent = font3.Size * 2; format3.MeasureTrailingSpaces = true; format3.LineSpacing = font3.Size * 1.5f; String text1 = "(All text and picture from "; String text2 = "Wikipedia"; String text3 = ", the free encyclopedia)"; page.Canvas.DrawString(text1, font3, brush2, 0, y, format3); size = font3.MeasureString(text1, format3); float x1 = size.Width; format3.ParagraphIndent = 0; PdfTrueTypeFont font4 = new PdfTrueTypeFont(new Font("Arial", 9f, FontStyle.Underline)); PdfBrush brush3 = PdfBrushes.Blue; page.Canvas.DrawString(text2, font4, brush3, x1, y, format3); size = font4.MeasureString(text2, format3); x1 = x1 + size.Width; page.Canvas.DrawString(text3, font3, brush2, x1, y, format3); y = y + size.Height; //content PdfStringFormat format4 = new PdfStringFormat(); text = System.IO.File.ReadAllText(@"..\..\..\..\..\..\Data\Summary_of_Science.txt"); PdfTrueTypeFont font5 = new PdfTrueTypeFont(new Font("Arial", 10f)); format4.LineSpacing = font5.Size * 1.5f; PdfStringLayouter textLayouter = new PdfStringLayouter(); float imageLeftBlockHeight = imageBottom - y; PdfStringLayoutResult result = textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight)); if (result.ActualSize.Height < imageBottom - y) { imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight; result = textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight)); } foreach (LineInfo line in result.Lines) { page.Canvas.DrawString(line.Text, font5, brush2, 0, y, format4); y = y + result.LineHeight; } PdfTextWidget textWidget = new PdfTextWidget(result.Remainder, font5, brush2); PdfTextLayout textLayout = new PdfTextLayout(); textLayout.Break = PdfLayoutBreakType.FitPage; textLayout.Layout = PdfLayoutType.Paginate; RectangleF bounds = new RectangleF(new PointF(0, y), page.Canvas.ClientSize); textWidget.StringFormat = format4; textWidget.Draw(page, bounds, textLayout); }
private void DrawContent(PdfSection section, PdfMargins margin) { section.PageNumber = new PdfPageNumber(); section.PageNumber.NumberStyle = PdfNumberStyle.Numeric; section.PageNumber.Prefix = "page "; section.PageSettings.Size = PdfPageSize.A4; section.PageSettings.Margins.All = 0; PdfPageBase page = section.Pages.Add(); DrawPageHeaderAndFooter(page, margin, false); float x = margin.Left; float y = margin.Top + 8; float width = page.Canvas.ClientSize.Width - margin.Left - margin.Right; PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 16f), true); PdfBrush brush1 = PdfBrushes.Black; PdfPen pen1 = new PdfPen(brush1, 0.75f); page.Canvas.DrawString(Pagination.Properties.Resources.Title, font1, brush1, x, y); y = y + font1.MeasureString(Pagination.Properties.Resources.Title).Height + 6; page.Canvas.DrawLine(pen1, x, y, page.Canvas.ClientSize.Width - margin.Right, y); y = y + 1.75f; String content = Pagination.Properties.Resources.Content; String[] lines = content.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 10f, FontStyle.Italic), true); PdfStringFormat format1 = new PdfStringFormat(); format1.MeasureTrailingSpaces = true; format1.LineSpacing = font2.Height * 1.5f; format1.ParagraphIndent = font2.MeasureString("\t", format1).Width; y = y + font2.Height * 0.5f; SizeF size = font2.MeasureString(lines[0], width, format1); page.Canvas.DrawString(lines[0], font2, brush1, new RectangleF(new PointF(x, y), size), format1); y = y + size.Height; PdfTrueTypeFont font3 = new PdfTrueTypeFont(new Font("Arial", 10f), true); PdfStringFormat format2 = new PdfStringFormat(); format2.LineSpacing = font3.Height * 1.4f; format2.MeasureTrailingSpaces = true; size = font3.MeasureString(lines[1], width, format2); page.Canvas.DrawString(lines[1], font3, brush1, new RectangleF(new PointF(x, y), size), format2); y = y + size.Height; y = y + font3.Height * 0.75f; float indent = font3.MeasureString("\t\t", format2).Width; float x1 = x + indent; size = font3.MeasureString(lines[2], width - indent, format2); page.Canvas.DrawString(lines[2], font3, brush1, new RectangleF(new PointF(x1, y), size), format2); y = y + size.Height + font3.Height * 0.75f; StringBuilder buff = new StringBuilder(); for (int i = 3; i < lines.Length; i++) { buff.AppendLine(lines[i]); } content = buff.ToString(); PdfStringLayouter textLayouter = new PdfStringLayouter(); PdfStringLayoutResult result = textLayouter.Layout(content, font3, format2, new SizeF(width, float.MaxValue)); foreach (LineInfo line in result.Lines) { if ((line.LineType & LineType.FirstParagraphLine) == LineType.FirstParagraphLine) { y = y + font3.Height * 0.75f; } if (y > (page.Canvas.ClientSize.Height - margin.Bottom - result.LineHeight)) { page = section.Pages.Add(); DrawPageHeaderAndFooter(page, margin, false); y = margin.Top; } page.Canvas.DrawString(line.Text, font3, brush1, x, y, format2); y = y + result.LineHeight; } }
private void button1_Click(object sender, EventArgs e) { //Create a pdf document PdfDocument doc = new PdfDocument(); //Create one page PdfPageBase page = doc.Pages.Add(); float pageWidth = page.Canvas.ClientSize.Width; float y = 0; //Page header PdfPen pen1 = new PdfPen(Color.LightGray, 1f); PdfBrush brush1 = new PdfSolidBrush(Color.LightGray); PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 8f, FontStyle.Italic)); PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Right); String text = "Demo of Spire.Pdf"; page.Canvas.DrawString(text, font1, brush1, pageWidth - 2, y, format1); SizeF size = font1.MeasureString(text, format1); y = y + size.Height + 1; page.Canvas.DrawLine(pen1, 0, y, pageWidth, y); //Title y = y + 25; PdfBrush brush2 = new PdfSolidBrush(Color.Black); PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 18f, FontStyle.Bold)); PdfStringFormat format2 = new PdfStringFormat(PdfTextAlignment.Center); format2.CharacterSpacing = 1f; text = "Summary of Science"; page.Canvas.DrawString(text, font2, brush2, pageWidth / 2, y, format2); size = font2.MeasureString(text, format2); y = y + size.Height + 16; //Icon PdfImage image = PdfImage.FromFile(@"..\..\..\..\..\..\Data\Wikipedia_Science.png"); page.Canvas.DrawImage(image, new PointF(pageWidth - image.PhysicalDimension.Width, y)); float imageLeftSpace = pageWidth - image.PhysicalDimension.Width - 2; float imageBottom = image.PhysicalDimension.Height + y; //Refenrence content PdfTrueTypeFont font3 = new PdfTrueTypeFont(new Font("Arial", 12f)); PdfStringFormat format3 = new PdfStringFormat(); format3.ParagraphIndent = font3.Size * 2; format3.MeasureTrailingSpaces = true; format3.LineSpacing = font3.Size * 1.5f; String text1 = "(All text and picture from "; String text2 = "Wikipedia"; String text3 = ", the free encyclopedia)"; page.Canvas.DrawString(text1, font3, brush2, 0, y, format3); size = font3.MeasureString(text1, format3); float x1 = size.Width; format3.ParagraphIndent = 0; PdfTrueTypeFont font4 = new PdfTrueTypeFont(new Font("Arial", 12f, FontStyle.Underline)); PdfBrush brush3 = PdfBrushes.Blue; page.Canvas.DrawString(text2, font4, brush3, x1, y, format3); size = font4.MeasureString(text2, format3); x1 = x1 + size.Width; page.Canvas.DrawString(text3, font3, brush2, x1, y, format3); y = y + size.Height; //Content PdfStringFormat format4 = new PdfStringFormat(); text = System.IO.File.ReadAllText(@"..\..\..\..\..\..\Data\Summary_of_Science.txt"); PdfTrueTypeFont font5 = new PdfTrueTypeFont(new Font("Arial", 12f)); format4.LineSpacing = font5.Size * 1.5f; PdfStringLayouter textLayouter = new PdfStringLayouter(); float imageLeftBlockHeight = imageBottom - y; PdfStringLayoutResult result = textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight)); if (result.ActualSize.Height < imageBottom - y) { imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight; result = textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight)); } foreach (LineInfo line in result.Lines) { page.Canvas.DrawString(line.Text, font5, brush2, 0, y, format4); y = y + result.LineHeight + 2; } PdfTextWidget textWidget = new PdfTextWidget(result.Remainder, font5, brush2); PdfTextLayout textLayout = new PdfTextLayout(); textLayout.Break = PdfLayoutBreakType.FitPage; textLayout.Layout = PdfLayoutType.Paginate; RectangleF bounds = new RectangleF(new PointF(0, y), page.Canvas.ClientSize); textWidget.StringFormat = format4; textWidget.Draw(page, bounds, textLayout); //Save the document doc.SaveToFile("TextLayout.pdf"); doc.Close(); //Launch the Pdf file PDFDocumentViewer("TextLayout.pdf"); }
/// <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; } }
private void button1_Click(object sender, EventArgs e) { // Creates a pdf document PdfDocument doc = new PdfDocument(); // Creates a page PdfPageBase page = doc.Pages.Add(); //Gets page width float pageWidth = page.Canvas.ClientSize.Width; float y = 0; y = y + 8; // Creates a brush PdfBrush brush = new PdfSolidBrush(Color.Black); // Defines a font PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 20f, FontStyle.Bold)); // Defines a text center alignment format PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Center); format1.CharacterSpacing = 1f; String text = "Spire.PDF for .NET"; // Draws text at the specified position page.Canvas.DrawString(text, font1, brush, pageWidth / 2, y, format1); // Get the size of text SizeF size = font1.MeasureString(text, format1); y = y + size.Height + 6; // Loads an image PdfImage image = PdfImage.FromFile(@"..\..\..\..\..\..\Data\PdfImage.png"); // Draws image at the specified position page.Canvas.DrawImage(image, new PointF(pageWidth - image.PhysicalDimension.Width, y)); float imageLeftSpace = pageWidth - image.PhysicalDimension.Width - 2; float imageBottom = image.PhysicalDimension.Height + y; PdfStringFormat format2 = new PdfStringFormat(); // Loads the text around the image text = System.IO.File.ReadAllText(@"..\..\..\..\..\..\Data\text.txt"); PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 16f)); //Set line spacing format2.LineSpacing = font2.Size * 1.5f; PdfStringLayouter textLayouter = new PdfStringLayouter(); float imageLeftBlockHeight = imageBottom - y; // Splits the text around into multiple lines based on the draw area PdfStringLayoutResult result = textLayouter.Layout(text, font2, format2, new SizeF(imageLeftSpace, imageLeftBlockHeight)); if (result.ActualSize.Height < imageLeftBlockHeight) { imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight; result = textLayouter.Layout(text, font2, format2, new SizeF(imageLeftSpace, imageLeftBlockHeight)); } // Draws all the lines onto the page foreach (LineInfo line in result.Lines) { page.Canvas.DrawString(line.Text, font2, brush, 0, y, format2); y = y + result.LineHeight; } // Draw the rest of the text onto the page PdfTextWidget textWidget = new PdfTextWidget(result.Remainder, font2, brush); PdfTextLayout textLayout = new PdfTextLayout(); textLayout.Break = PdfLayoutBreakType.FitPage; textLayout.Layout = PdfLayoutType.Paginate; RectangleF bounds = new RectangleF(new PointF(0, y), page.Canvas.ClientSize); textWidget.StringFormat = format2; textWidget.Draw(page, bounds, textLayout); String output = "PlaceTextAroundImage_out.pdf"; //Save the document doc.SaveToFile(output); //Launch the Pdf file PDFDocumentViewer(output); }