public static string GetInformationAboutRichEditDocumentLayout(Document currentDocument, DocumentLayout currentDocumentLayout) { SubDocument subDocument = currentDocument.CaretPosition.BeginUpdateDocument(); DocumentPosition docPosition = subDocument.CreatePosition(currentDocument.CaretPosition.ToInt() == 0 ? 0 : currentDocument.CaretPosition.ToInt() - 1); ReadOnlyShapeCollection shapes = subDocument.Shapes.Get(subDocument.CreateRange(docPosition, 1)); ReadOnlyDocumentImageCollection images = subDocument.Images.Get(subDocument.CreateRange(docPosition, 1)); if (shapes.Count == 0 && images.Count == 0) { docPosition = subDocument.CreatePosition(currentDocument.CaretPosition.ToInt()); } string returnedInformation = ""; // get infromation about a current document element returnedInformation += GetInformationAboutCurrentDocumentElement(currentDocument, currentDocumentLayout, subDocument, docPosition); // collect information about CURRENT PAGE RangedLayoutElement layoutPosition = currentDocumentLayout.GetElement <RangedLayoutElement>(docPosition); if (layoutPosition != null) { int currentPageIndex = currentDocumentLayout.GetPageIndex(layoutPosition); returnedInformation += PageLayoutHelper.GetInformationAboutCurrentPage(currentDocumentLayout, currentDocumentLayout.GetPage(currentPageIndex), docPosition); } currentDocument.CaretPosition.EndUpdateDocument(subDocument); return(returnedInformation); }
// get information about a current text box layout public static string GetInformationAboutCurrentTextBox(SubDocument subDocument, DocumentLayout currentLayout, DocumentPosition docPosition) { string returnedInformation = "!A TEXTBOX CONTENT IS SELECTED!\r\n"; LayoutIterator layoutIterator = new LayoutIterator(currentLayout, subDocument.Range); LayoutPage currentTextBoxPage = null; LayoutTextBox currentTextBox = null; while (layoutIterator.MoveNext()) { LayoutElement element = layoutIterator.Current; if (element is LayoutTextBox) { currentTextBox = (element as LayoutTextBox); if (currentTextBox.Parent is LayoutPage) { currentTextBoxPage = currentTextBox.Parent as LayoutPage; } } if (element is PlainTextBox) { PlainTextBox currentPlaintTextBox = element as PlainTextBox; if (currentPlaintTextBox.Range.Contains(docPosition.ToInt())) { returnedInformation += String.Format("Selected content: {0}\r\n", currentPlaintTextBox.Text); LayoutRow currentRow = currentPlaintTextBox.Parent as LayoutRow; int currentLineIndex = currentTextBox.Rows.ToList().IndexOf(currentRow); returnedInformation += String.Format("Line index: {0}\r\n", currentLineIndex + 1); returnedInformation += String.Format("Selected block bounds: {0}\r\n", currentPlaintTextBox.Bounds); break; } } } returnedInformation += String.Format("TEXTBOX bounds: {0}\r\n", currentTextBox.Bounds); returnedInformation += String.Format("\r\n!!Content information:\r\n"); returnedInformation += GetInformationAboutCurrentTextBoxContent(currentTextBox, currentLayout); if (currentTextBoxPage != null) { returnedInformation += PageLayoutHelper.GetInformationAboutCurrentPage(currentLayout, currentTextBoxPage, docPosition); } return(returnedInformation); }