Example #1
0
 private void ParseTextlines()
 {
     foreach (Models.Text.Textline bTextline in Element.Textlines)
     {
         Textline textline = Textline.Parse(Document, bTextline);
         Add(textline);
     }
 }
Example #2
0
        /// <summary>
        /// Parses an OpenTemplater Text model to a PDF text model.
        /// </summary>
        /// <param name="pdfDocument"></param>
        /// <param name="bText"></param>
        /// <returns></returns>
        public static PdfText Parse(PdfDocument pdfDocument, Models.Text.Text bText)
        {
            PdfText pPdfText = new PdfText();

            pPdfText.ObjectLayoutContainer = bText.LayoutContainer;

            foreach (Models.Text.Textline bTextline in bText.Textlines)
            {
                Textline textline = Textline.Parse(pdfDocument, bTextline);
                pPdfText.Add(textline);
            }

            return(pPdfText);
        }
Example #3
0
        /// <summary>
        /// Converts a paragraph to a textline list.
        /// </summary>
        /// <param name="maximumWidth">Unit to use for measuring the maximum width of an textline</param>
        /// <param name="paragraph">paragraph to convert to textlines.</param>
        /// <returns></returns>
        public TextlineCollection ConvertToTextlines(Unit maximumWidth, Paragraph paragraph)
        {
            IList <Textline> result             = new List <Textline>();
            float            maximumPointWidth  = maximumWidth.Points;
            float            totalMeasuredWidth = 0f;
            Textline         currentTextline    = new Textline(paragraph);

            TextElementCollection splittedTextElements = new TextElementCollection();

            if (paragraph.TextElements.Count() > 0)
            {
                foreach (TextElement textElement in paragraph.TextElements)
                {
                    splittedTextElements.AddRange(ConvertToTextElements(textElement));
                }

                foreach (TextElement splittedTextElement in splittedTextElements)
                {
                    float width          = MeasureTextElementWidth(splittedTextElement);
                    float tempTotalWidth = totalMeasuredWidth + width;

                    if (tempTotalWidth > maximumPointWidth)
                    {
                        currentTextline.Width  = new Unit(totalMeasuredWidth);
                        currentTextline.Height = paragraph.Leading;
                        result.Add(currentTextline);
                        currentTextline    = new Textline(paragraph);
                        totalMeasuredWidth = width;
                    }
                    else
                    {
                        totalMeasuredWidth = tempTotalWidth;
                    }

                    currentTextline.Add(splittedTextElement);
                }

                currentTextline.Width = new Unit(totalMeasuredWidth);
            }
            else
            {
                currentTextline.Width = new Unit(0f);
            }

            currentTextline.Height        = paragraph.Leading;
            currentTextline.EndsParagraph = true;

            result.Add(currentTextline);
            return(new TextlineCollection(result.ToList()));
        }
Example #4
0
 /// <summary>
 /// Adds a textline to this text.
 /// </summary>
 /// <param name="textline"></param>
 public void Add(Textline textline)
 {
     _textlines.Add(textline);
 }