Ejemplo n.º 1
0
        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;
            }
        }