コード例 #1
0
        async Task <PdfUnicodeTrueTypeFont> CreateFontFromFile(string fontName, double fontSize)
        {
            var ttf = await StorageFile.GetFileFromApplicationUriAsync(new Uri($"ms-appx:///Assets/Fonts/{fontName}"));

            var ttfStream = await ttf.OpenStreamForReadAsync();

            var font = new PdfUnicodeTrueTypeFont(ttfStream, fontSize, true);

            ttfStream.Dispose();

            return(font);
        }
コード例 #2
0
ファイル: Fonts.cs プロジェクト: baitun/BGUEP-Journal
        private static void DisableTextCopy(PdfPage page, Stream ttfStream)
        {
            PdfStandardFont titleFont = new PdfStandardFont(PdfStandardFontFace.HelveticaBold, 22);
            PdfBrush blackBrush = new PdfBrush(new PdfRgbColor());

            page.Graphics.DrawString("Draw text that cannot be copied and", titleFont, blackBrush, 20, 50);
            page.Graphics.DrawString("pasted in another applications", titleFont, blackBrush, 20, 75);

            ttfStream.Position = 0;
            PdfUnicodeTrueTypeFont f1 = new PdfUnicodeTrueTypeFont(ttfStream, 16, true);
            page.Graphics.DrawString("This text can be copied and pasted", f1, blackBrush, 20, 150);
            page.Graphics.DrawString("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", f1, blackBrush, 20, 175);

            ttfStream.Position = 0;
            PdfUnicodeTrueTypeFont f2 = new PdfUnicodeTrueTypeFont(ttfStream, 16, true);
            f2.EnableTextCopy = false;
            page.Graphics.DrawString("This text cannot be copied and pasted.", f2, blackBrush, 20, 225);
            page.Graphics.DrawString("Praesent sed massa a est fringilla mattis. Aenean sit amet odio ac nunc.", f2, blackBrush, 20, 250);
        }
コード例 #3
0
ファイル: Fonts.cs プロジェクト: littlefeihu/checktask
        private static void DisableTextCopy(PdfPage page, Stream ttfStream)
        {
            PdfStandardFont titleFont  = new PdfStandardFont(PdfStandardFontFace.HelveticaBold, 22);
            PdfBrush        blackBrush = new PdfBrush(new PdfRgbColor());

            page.Graphics.DrawString("Draw text that cannot be copied and", titleFont, blackBrush, 20, 50);
            page.Graphics.DrawString("pasted in another applications", titleFont, blackBrush, 20, 75);

            ttfStream.Position = 0;
            PdfUnicodeTrueTypeFont f1 = new PdfUnicodeTrueTypeFont(ttfStream, 16, true);

            page.Graphics.DrawString("This text can be copied and pasted", f1, blackBrush, 20, 150);
            page.Graphics.DrawString("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", f1, blackBrush, 20, 175);

            ttfStream.Position = 0;
            PdfUnicodeTrueTypeFont f2 = new PdfUnicodeTrueTypeFont(ttfStream, 16, true);

            f2.EnableTextCopy = false;
            page.Graphics.DrawString("This text cannot be copied and pasted.", f2, blackBrush, 20, 225);
            page.Graphics.DrawString("Praesent sed massa a est fringilla mattis. Aenean sit amet odio ac nunc.", f2, blackBrush, 20, 250);
        }
コード例 #4
0
ファイル: Fonts.cs プロジェクト: littlefeihu/checktask
        private static void DrawTrueTypeFonts(PdfPage page, Stream ttfStream)
        {
            PdfStandardFont titleFont  = new PdfStandardFont(PdfStandardFontFace.HelveticaBold, 22);
            PdfBrush        blackBrush = new PdfBrush(new PdfRgbColor());

            page.Graphics.DrawString("TrueType fonts", titleFont, blackBrush, 20, 50);
            page.Graphics.DrawString("(when embedded they should be supported", titleFont, blackBrush, 20, 75);
            page.Graphics.DrawString(" by any PDF viewer)", titleFont, blackBrush, 20, 100);

            PdfAnsiTrueTypeFont ansiVerdana = new PdfAnsiTrueTypeFont(ttfStream, 16, true);

            page.Graphics.DrawString("Verdana - Ansi TrueType font", ansiVerdana, blackBrush, 20, 150);
            page.Graphics.DrawString("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", ansiVerdana, blackBrush, 20, 175);

            ttfStream.Position = 0;
            PdfUnicodeTrueTypeFont unicodeVerdana = new PdfUnicodeTrueTypeFont(ttfStream, 16, true);

            page.Graphics.DrawString("Verdana - Unicode TrueType font", unicodeVerdana, blackBrush, 20, 225);

            page.Graphics.DrawString("Russian - Пример русский текст демо шрифт.", unicodeVerdana, blackBrush, 20, 250);
            page.Graphics.DrawString("Greek - Δείγμα ελληνικό κείμενο demo γραμματοσειράς.", unicodeVerdana, blackBrush, 20, 275);
        }
コード例 #5
0
        public async Task <PdfFixedDocument> GenerateGamePDF(Game game, IEnumerable <Team> teams, IEnumerable <Player> players)
        {
            CultureInfo currentCulture = CultureInfo.CurrentUICulture;

            PdfUnicodeTrueTypeFont verdanaBold = await CreateFontFromFile("verdanab.ttf", FONTSIZE_PAGE_TITLE);

            PdfUnicodeTrueTypeFont verdana = await CreateFontFromFile("verdana.ttf", FONTSIZE_DEFAULT);

            PdfBrush brush = new PdfBrush();

            PdfFixedDocument pdf = new PdfFixedDocument();

            CreateNewPage(pdf, verdanaBold, brush);

            /// Заголовок документа
            verdanaBold.Size = FONTSIZE_PAGE_TITLE;
            CurrentPage.Graphics.DrawString($"{game.Name.ToUpper()} {game.Date}", verdanaBold, brush, PagePadding.Left, PagePadding.Top);

            MeasureAvailableSpace(offsetY: FONTSIZE_PAGE_TITLE + OFFSET_Y_FROM_TITLE);

            /// Заголовки таблицы
            verdanaBold.Size = FONTSIZE_DEFAULT;
            double columnSize      = AvailableSize.Width * 0.25;
            double tableHeaderYPos = GetAvailableTop();

            CurrentPage.Graphics.DrawString("Игрок", verdanaBold, brush, PagePadding.Left + columnSize * 0, tableHeaderYPos);
            CurrentPage.Graphics.DrawString("Рейтинг", verdanaBold, brush, PagePadding.Left + columnSize * 1, tableHeaderYPos);
            CurrentPage.Graphics.DrawString("Точность", verdanaBold, brush, PagePadding.Left + columnSize * 2, tableHeaderYPos);
            CurrentPage.Graphics.DrawString("Выстрелы", verdanaBold, brush, PagePadding.Left + columnSize * 3, tableHeaderYPos);

            MeasureAvailableSpace(offsetY: FONTSIZE_DEFAULT + OFFSET_Y_FROM_TABLE_HEADER);

            /// Заполнение данных групп
            PdfPen linePen = new PdfPen(new PdfRgbColor(213, 214, 216), 0.5);
            Dictionary <Team, IEnumerable <Player> > playersTeams = new Dictionary <Team, IEnumerable <Player> >();
            int    counter = 0;
            double teamHeaderDesiredHeight = FONTSIZE_GROUP_HEADER + OFFSET_Y_FROM_GROUP_HEADER_OR_ITEM;

            foreach (var team in teams)
            {
                if (counter != 0)
                {
                    MeasureAvailableSpace(offsetY: OFFSET_Y_FROM_GROUP);
                }

                if (AvailableSize.Height < teamHeaderDesiredHeight)
                {
                    CreateNewPage(pdf, verdanaBold, brush);
                }

                verdanaBold.Size = FONTSIZE_GROUP_HEADER;
                CurrentPage.Graphics.DrawString(team.Name, verdanaBold, brush, PagePadding.Left, GetAvailableTop());

                MeasureAvailableSpace(offsetY: teamHeaderDesiredHeight);

                var playersInTeam = playersTeams[team] = players.Where(x => x.TeamID == team.ID);

                double playerDesiredSize = FONTSIZE_DEFAULT + 5 + OFFSET_Y_FROM_GROUP_HEADER_OR_ITEM;
                foreach (var player in playersInTeam)
                {
                    if (AvailableSize.Height < teamHeaderDesiredHeight)
                    {
                        CreateNewPage(pdf, verdanaBold, brush);
                    }

                    double rowYPos  = GetAvailableTop();
                    double lineYpos = rowYPos + FONTSIZE_DEFAULT + 5;

                    CurrentPage.Graphics.DrawString(player.Name, verdana, brush, PagePadding.Left + columnSize * 0, rowYPos);
                    CurrentPage.Graphics.DrawString($"{player.Rating}", verdana, brush, PagePadding.Left + columnSize * 1, rowYPos);
                    CurrentPage.Graphics.DrawString($"{player.AccuracyPercentage}%", verdana, brush, PagePadding.Left + columnSize * 2, rowYPos);
                    CurrentPage.Graphics.DrawString($"{player.Shots}", verdana, brush, PagePadding.Left + columnSize * 3, rowYPos);

                    CurrentPage.Graphics.DrawLine(linePen, PagePadding.Left, lineYpos, CurrentPage.Width - PagePadding.Right, lineYpos);
                    MeasureAvailableSpace(offsetY: playerDesiredSize);
                }

                counter++;
            }

            /// Блок сравнения команд по показателям
            PdfPen   rectanglePen   = new PdfPen(new PdfRgbColor(1, 90, 255), 0.5);
            PdfBrush rectangleBrush = new PdfBrush(new PdfRgbColor(1, 90, 255));

            double teamMarkWidth         = (AvailableSize.Width - OFFSET_Y_FROM_TABLE) * 0.5;
            double teamMarkDesiredHeight =
                FONTSIZE_GROUP_HEADER +
                OFFSET_Y_FROM_GROUP_HEADER_OR_ITEM +
                FONTSIZE_DEFAULT +
                5 +
                20 +
                OFFSET_Y_FROM_GROUP_HEADER_OR_ITEM +
                5 +
                20;

            counter = 0;
            MeasureAvailableSpace(offsetY: OFFSET_Y_FROM_TABLE);

            double maxRating = players.Max(x => x.Rating);

            foreach (var playersTeam in playersTeams)
            {
                int markXPosIndex = counter % 2;
                if (counter > 0 && markXPosIndex == 0)
                {
                    MeasureAvailableSpace(offsetY: teamMarkDesiredHeight + OFFSET_Y_FROM_TABLE);
                }

                if (markXPosIndex == 0 && AvailableSize.Height < teamMarkDesiredHeight)
                {
                    CreateNewPage(pdf, verdanaBold, brush);
                }

                double xPos = PagePadding.Left + (teamMarkWidth + OFFSET_Y_FROM_TABLE) * markXPosIndex;
                double yPos = GetAvailableTop();

                Team team = playersTeam.Key;
                IEnumerable <Player> playersInTeam = playersTeam.Value;

                verdanaBold.Size = FONTSIZE_GROUP_HEADER;
                CurrentPage.Graphics.DrawString(team.Name, verdanaBold, brush, xPos, yPos);

                /// Рейтинг
                yPos += FONTSIZE_GROUP_HEADER + OFFSET_Y_FROM_GROUP_HEADER_OR_ITEM;
                double avgRating = playersInTeam.Average(x => x.Rating);

                PdfStringAppearanceOptions ratingValueAppearance = new PdfStringAppearanceOptions
                {
                    Brush = brush,
                    Font  = verdanaBold,
                };

                PdfStringLayoutOptions ratingValueLayout = new PdfStringLayoutOptions()
                {
                    HorizontalAlign = PdfStringHorizontalAlign.Right,
                    VerticalAlign   = PdfStringVerticalAlign.Bottom,
                    X = xPos + teamMarkWidth,
                    Y = yPos
                };

                verdanaBold.Size = FONTSIZE_DEFAULT;
                CurrentPage.Graphics.DrawString("Рейтинг", verdanaBold, brush, xPos, yPos);
                CurrentPage.Graphics.DrawString(avgRating.ToString("0.00", currentCulture), ratingValueAppearance, ratingValueLayout);

                yPos += FONTSIZE_DEFAULT + 5;
                CurrentPage.Graphics.DrawRectangle(rectanglePen, xPos, yPos, teamMarkWidth, 10);
                CurrentPage.Graphics.DrawRectangle(rectanglePen, rectangleBrush, xPos, yPos, avgRating * teamMarkWidth / maxRating, 10);

                /// Точность
                yPos += 10 + OFFSET_Y_FROM_GROUP_HEADER_OR_ITEM;
                double avgAccuracy = playersInTeam.Average(x => x.AccuracyPercentage);

                PdfStringAppearanceOptions accuracyValueAppearance = new PdfStringAppearanceOptions
                {
                    Brush = brush,
                    Font  = verdanaBold,
                };

                PdfStringLayoutOptions accuracyValueLayout = new PdfStringLayoutOptions()
                {
                    HorizontalAlign = PdfStringHorizontalAlign.Right,
                    VerticalAlign   = PdfStringVerticalAlign.Bottom,
                    X = xPos + teamMarkWidth,
                    Y = yPos
                };

                verdanaBold.Size = FONTSIZE_DEFAULT;
                CurrentPage.Graphics.DrawString("Точность", verdanaBold, brush, xPos, yPos);
                CurrentPage.Graphics.DrawString(avgAccuracy.ToString("0.0", currentCulture) + "%", accuracyValueAppearance, accuracyValueLayout);

                yPos += FONTSIZE_DEFAULT + 5;
                CurrentPage.Graphics.DrawRectangle(rectanglePen, xPos, yPos, teamMarkWidth, 10);
                CurrentPage.Graphics.DrawRectangle(rectanglePen, rectangleBrush, xPos, yPos, avgAccuracy * teamMarkWidth / 100, 10);

                counter++;
            }



            foreach (var page in pdf.Pages)
            {
                page.Graphics.CompressAndClose();
            }

            return(pdf);
        }
コード例 #6
0
ファイル: Fonts.cs プロジェクト: baitun/BGUEP-Journal
        private static void DrawTrueTypeFonts(PdfPage page, Stream ttfStream)
        {
            PdfStandardFont titleFont = new PdfStandardFont(PdfStandardFontFace.HelveticaBold, 22);
            PdfBrush blackBrush = new PdfBrush(new PdfRgbColor());

            page.Graphics.DrawString("TrueType fonts", titleFont, blackBrush, 20, 50);
            page.Graphics.DrawString("(when embedded they should be supported", titleFont, blackBrush, 20, 75);
            page.Graphics.DrawString(" by any PDF viewer)", titleFont, blackBrush, 20, 100);

            PdfAnsiTrueTypeFont ansiVerdana = new PdfAnsiTrueTypeFont(ttfStream, 16, true);
            page.Graphics.DrawString("Verdana - Ansi TrueType font", ansiVerdana, blackBrush, 20, 150);
            page.Graphics.DrawString("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", ansiVerdana, blackBrush, 20, 175);

            ttfStream.Position = 0;
            PdfUnicodeTrueTypeFont unicodeVerdana = new PdfUnicodeTrueTypeFont(ttfStream, 16, true);
            page.Graphics.DrawString("Verdana - Unicode TrueType font", unicodeVerdana, blackBrush, 20, 225);

            page.Graphics.DrawString("Russian - Пример русский текст демо шрифт.", unicodeVerdana, blackBrush, 20, 250);
            page.Graphics.DrawString("Greek - Δείγμα ελληνικό κείμενο demo γραμματοσειράς.", unicodeVerdana, blackBrush, 20, 275);
        }
コード例 #7
0
        //public static PdfFlowTextContent GeneratePdfContent(List<string> pdfText, Models.Dosar dosar)
        public static PdfFormattedContent GeneratePdfContent(List <string> pdfText, Models.Dosar dosar)
        {
            Models.SocietateAsigurare sCasco = (Models.SocietateAsigurare)dosar.GetSocietateCasco().Result;
            Models.SocietateAsigurare sRca   = (Models.SocietateAsigurare)dosar.GetSocietateRca().Result;
            Models.Asigurat           aCasco = (Models.Asigurat)dosar.GetAsiguratCasco().Result;
            Models.Asigurat           aRca   = (Models.Asigurat)dosar.GetAsiguratRca().Result;
            Models.Auto autoCasco            = (Models.Auto)dosar.GetAutoCasco().Result;
            Models.Auto autoRca = (Models.Auto)dosar.GetAutoRca().Result;

            Dictionary <string, string> field_names = new Dictionary <string, string>();

            field_names.Add("{{NR_SCA}}", dosar.NR_SCA == null || dosar.NR_SCA.Trim() == "" ? "_________" : dosar.NR_SCA);
            field_names.Add("{{DATA_SCA}}", dosar.DATA_SCA == null ? "____________" : Convert.ToDateTime(dosar.DATA_SCA).Year.ToString());
            field_names.Add("{{NR_DOSAR_CASCO}}", dosar.NR_DOSAR_CASCO == null || dosar.NR_DOSAR_CASCO.Trim() == "" ? "_________________" : dosar.NR_DOSAR_CASCO);
            field_names.Add("{{VALOARE_DAUNA}}", dosar.VALOARE_DAUNA.ToString().Trim() == "" ? "___________" : dosar.VALOARE_DAUNA.ToString());
            field_names.Add("{{NR_POLITA_CASCO}}", dosar.NR_POLITA_CASCO == null || dosar.NR_POLITA_CASCO.Trim() == "" ? "_________________" : dosar.NR_POLITA_CASCO);
            field_names.Add("{{NR_POLITA_RCA}}", dosar.NR_POLITA_RCA == null || dosar.NR_POLITA_RCA.Trim() == "" ? "_________________" : dosar.NR_POLITA_RCA);
            field_names.Add("{{DATA_EVENIMENT}}", dosar.DATA_EVENIMENT == null ? "___________" : Convert.ToDateTime(dosar.DATA_EVENIMENT).ToString("dd/MM/yyyy"));

            field_names.Add("{{SOCIETATE_CASCO}}", sCasco.DENUMIRE == null || sCasco.DENUMIRE.Trim() == "" ? "__________________________________" : sCasco.DENUMIRE);
            field_names.Add("{{ADRESA_SOCIETATE_CASCO}}", sCasco.ADRESA == null || sCasco.ADRESA.Trim() == "" ? "___________________________________________________" : sCasco.ADRESA);
            field_names.Add("{{NR_REG_COM_SOCIETATE_CASCO}}", sCasco.NR_REG_COM == null || sCasco.NR_REG_COM.Trim() == "" ? "_______________" : sCasco.NR_REG_COM.ToUpper());
            field_names.Add("{{CUI_SOCIETATE_CASCO}}", sCasco.CUI == null || sCasco.CUI.Trim() == "" ? "______________" : sCasco.CUI.ToUpper());
            field_names.Add("{{IBAN_SOCIETATE_CASCO}}", sCasco.IBAN == null || sCasco.IBAN.Trim() == "" ? "__________________________________________" : sCasco.IBAN.ToUpper());
            field_names.Add("{{BANCA_SOCIETATE_CASCO}}", sCasco.BANCA == null || sCasco.BANCA.Trim() == "" ? "____________________________________" : sCasco.BANCA.ToUpper());

            field_names.Add("{{SOCIETATE_RCA}}", sRca.DENUMIRE == null || sRca.DENUMIRE.Trim() == "" ? "_________________________________" : sRca.DENUMIRE);
            field_names.Add("{{ADRESA_SOCIETATE_RCA}}", sRca.ADRESA == null || sRca.ADRESA.Trim() == "" ? "___________________________________________________" : sRca.ADRESA);
            field_names.Add("{{ASIGURAT_CASCO}}", aCasco.DENUMIRE == null || aCasco.DENUMIRE.Trim() == "" ? "__________________________________" : aCasco.DENUMIRE);
            field_names.Add("{{ASIGURAT_RCA}}", aRca.DENUMIRE == null || aRca.DENUMIRE.Trim() == "" ? "__________________________________" : aRca.DENUMIRE);

            field_names.Add("{{NR_AUTO_CASCO}}", autoCasco.NR_AUTO == null || autoCasco.NR_AUTO.Trim() == "" ? "____________" : autoCasco.NR_AUTO.ToUpper());
            field_names.Add("{{MARCA_AUTO_CASCO}}", autoCasco.MARCA == null || autoCasco.MARCA.Trim() == "" ? "______________" : autoCasco.MARCA.ToUpper());
            field_names.Add("{{NR_AUTO_RCA}}", autoRca.NR_AUTO == null || autoRca.NR_AUTO.Trim() == "" ? "____________" : autoRca.NR_AUTO.ToUpper());
            field_names.Add("{{PROPRIETAR_AUTO_RCA}}", "_______________________");

            field_names.Add("{{NORMA}}", dosar.DATA_EVENIMENT < new DateTime(2015, 1, 1) ? Articole.articole[0].Ordin : dosar.DATA_EVENIMENT >= new DateTime(2015, 1, 1) && dosar.DATA_EVENIMENT <= new DateTime(2016, 12, 22) ? Articole.articole[1].Ordin : Articole.articole[2].Ordin);
            field_names.Add("{{ARTICOL_PLATA}}", dosar.DATA_EVENIMENT < new DateTime(2015, 1, 1) ? Articole.articole[0].ArticolPlata : dosar.DATA_EVENIMENT >= new DateTime(2015, 1, 1) && dosar.DATA_EVENIMENT <= new DateTime(2016, 12, 22) ? Articole.articole[1].ArticolPlata : Articole.articole[2].ArticolPlata);
            field_names.Add("{{ARTICOL_OBIECTIUNI}}", dosar.DATA_EVENIMENT < new DateTime(2015, 1, 1) ? Articole.articole[0].ArticolObiectiuni : dosar.DATA_EVENIMENT >= new DateTime(2015, 1, 1) && dosar.DATA_EVENIMENT <= new DateTime(2016, 12, 22) ? Articole.articole[1].ArticolObiectiuni : Articole.articole[2].ArticolObiectiuni);
            field_names.Add("{{TERMEN}}", dosar.DATA_EVENIMENT < new DateTime(2015, 1, 1) ? Articole.articole[0].NrZile : dosar.DATA_EVENIMENT >= new DateTime(2015, 1, 1) && dosar.DATA_EVENIMENT <= new DateTime(2016, 12, 22) ? Articole.articole[1].NrZile : Articole.articole[2].NrZile);
            field_names.Add("{{CAZ}}", dosar.CAZ == null || dosar.CAZ.Trim() == "" ? "_____" : dosar.CAZ);
            field_names.Add("{{DATA}}", DateTime.Now.ToString("dd/MM/yyyy"));


            string docs = "";

            //pentru insiruirea in opis a tuturor documentelor, negrupate pe tip

            /*
             * Models.DocumentScanat[] dsj = (Models.DocumentScanat[])dosar.GetDocumente().Result;
             * foreach (Models.DocumentScanat doc in dsj)
             * {
             *  Models.Nomenclator tip_document = (Models.Nomenclator)doc.GetTipDocument().Result;
             *  //docs = String.Format("- {1}\r\n{0}", docs, (doc.DETALII != "" && doc.DETALII != null ? doc.DETALII : doc.DENUMIRE_FISIER));
             *  docs = String.Format("- {1}\r\n{0}", docs, tip_document.DENUMIRE + " " + (doc.DETALII != "" && doc.DETALII != null ? doc.DETALII : ""));
             * }
             */
            object[] DocumenteTipuri = (object[])dosar.GetDocumenteTipuri().Result;
            foreach (object[] documentTip in DocumenteTipuri)
            {
                docs = String.Format("{0}\r\n- {1}{2}", docs, documentTip[1].ToString(), Convert.ToInt32(documentTip[2]) > 1 ? " (" + documentTip[2].ToString() + " file)" : "");
            }

            field_names.Add("{{DOCUMENTE}}", docs);


            PdfUnicodeTrueTypeFont boldFont    = new PdfUnicodeTrueTypeFont(new FileStream(Path.Combine(AppContext.BaseDirectory, "Content", "arialbold.ttf"), FileMode.Open, FileAccess.Read, FileShare.Read), 12, true);
            PdfUnicodeTrueTypeFont regularFont = new PdfUnicodeTrueTypeFont(new FileStream(Path.Combine(AppContext.BaseDirectory, "Content", "arial.ttf"), FileMode.Open, FileAccess.Read, FileShare.Read), 12, true);

            PdfFormattedContent pfc = new PdfFormattedContent();

            foreach (string s in pdfText)
            {
                PdfFormattedParagraph pfp = new PdfFormattedParagraph();
                pfp.LineSpacingMode = PdfFormattedParagraphLineSpacing.Multiple;
                pfp.LineSpacing     = 1.3;
                pfp.SpacingAfter    = 15;

                if (s.IndexOf("{{NR_SCA}}") > -1)
                {
                    pfp.HorizontalAlign = PdfStringHorizontalAlign.Right;
                }
                else if (s.IndexOf("CERERE DE DESPAGUBIRE") > -1)
                {
                    pfp.HorizontalAlign = PdfStringHorizontalAlign.Center;
                }
                else
                {
                    pfp.HorizontalAlign = PdfStringHorizontalAlign.Justified;
                    if (s.IndexOf("Catre") < 0 && s.IndexOf("{{DOCUMENTE}}") < 0 && s.IndexOf("$$") < 0)
                    {
                        pfp.FirstLineIndent = 30;
                    }
                    if (s.IndexOf("{{DOCUMENTE}}") > -1 || s.IndexOf("$$") > -1)
                    {
                        pfp.LeftIndentation = 50;
                    }
                }

                List <string> splitters = new List <string>();
                foreach (KeyValuePair <string, string> field in field_names)
                {
                    if (s.IndexOf(field.Key) > -1)
                    {
                        splitters.Add(field.Key);
                    }
                }
                string[] sBlocks = null;
                if (splitters.Count > 0)
                {
                    sBlocks = s.Split(splitters.ToArray(), StringSplitOptions.None);
                }
                else
                {
                    sBlocks = new string[] { s }
                };

                int splitter_count = 0;
                for (int i = 0; i < sBlocks.Length; i++)
                {
                    try
                    {
                        PdfFormattedTextBlock b1 = new PdfFormattedTextBlock(sBlocks[i].Replace("$$", "\r\n"), sBlocks[i].IndexOf("CERERE DE DESPAGUBIRE") > -1 ? boldFont : regularFont);
                        pfp.Blocks.Add(b1);
                        string theFuckingWrightSplitter = "";
                        //if (splitter_count < splitters.Count)
                        {
                            foreach (string splitter in splitters)
                            {
                                if (s.IndexOf(sBlocks[i] + splitter) > -1)
                                {
                                    theFuckingWrightSplitter = splitter;
                                    splitter_count++;
                                    splitters.Remove(splitter);
                                    break;
                                }
                            }
                            //PdfFormattedTextBlock b2 = new PdfFormattedTextBlock(field_names[splitters[i]], boldFont);
                            PdfFormattedTextBlock b2 = new PdfFormattedTextBlock(field_names[theFuckingWrightSplitter], boldFont);
                            pfp.Blocks.Add(b2);
                        }
                    }
                    catch { }
                }
                pfc.Paragraphs.Add(pfp);
            }
            //pfc.SplitByBox(485, 742);
            //PdfFlowTextContent pftc = new PdfFlowTextContent(pfc);
            //return pftc;
            return(pfc);
        }