private void ParseTextlines() { foreach (Models.Text.Textline bTextline in Element.Textlines) { Textline textline = Textline.Parse(Document, bTextline); Add(textline); } }
/// <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); }
/// <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())); }
/// <summary> /// Adds a textline to this text. /// </summary> /// <param name="textline"></param> public void Add(Textline textline) { _textlines.Add(textline); }