Exemple #1
0
        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);
        }
Exemple #2
0
        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;
            }
        }
Exemple #3
0
        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;
            }
        }
Exemple #5
0
        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);
        }