private void CreateNewIterator() { layoutIterator = new LayoutIterator(richEditControl1.DocumentLayout); doc = richEditControl1.Document; UpdateInfoAndSelection(); MessageBox.Show("Layout is modified, creating a new iterator."); }
// 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); }
private void btnSetRange_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (coloredRange != null) { ResetRange(coloredRange); } coloredRange = richEditControl1.Document.Selection; if (coloredRange.Length == 0) { return; } // Highlight selected range. SubDocument d = coloredRange.BeginUpdateDocument(); CharacterProperties cp = d.BeginUpdateCharacters(coloredRange); cp.BackColor = System.Drawing.Color.Yellow; d.EndUpdateCharacters(cp); coloredRange.EndUpdateDocument(d); // Create a new iterator limited to the specified range. layoutIterator = new LayoutIterator(richEditControl1.DocumentLayout, coloredRange); doc = coloredRange.BeginUpdateDocument(); richEditControl1.Document.ChangeActiveDocument(doc); coloredRange.EndUpdateDocument(doc); // Select the first element in the highlighted range. RangedLayoutElement el = richEditControl1.DocumentLayout.GetElement(coloredRange.Start, LayoutType.PlainTextBox); while (layoutIterator.MoveNext()) { RangedLayoutElement element = layoutIterator.Current as RangedLayoutElement; if ((element != null) && (element.Equals(el))) { UpdateInfoAndSelection(); return; } } }
public async Task <ParsingResult> Parse(ParsingRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } logger.LogDebug("Parsing [{0}]", request.File.FullName); using (var documentProcessor = new RichEditDocumentServer()) { documentProcessor.LayoutCalculationMode = CalculationModeType.Automatic; documentProcessor.LayoutUnit = DocumentLayoutUnit.Document; var loaded = Observable.FromEventPattern <EventHandler, EventArgs>( h => documentProcessor.DocumentLayout.DocumentFormatted += h, h => documentProcessor.DocumentLayout.DocumentFormatted -= h) .FirstOrDefaultAsync() .GetAwaiter(); documentProcessor.LoadDocument(request.File.FullName); await loaded; var iterator = new DocumentIterator(documentProcessor.Document); var pageLayout = new CurrentLayoutVisitor(); var visitor = new DocumentVisitor(pageLayout); var layoutIterator = new LayoutIterator(documentProcessor.DocumentLayout); while (layoutIterator.MoveNext(LayoutLevel.Page)) { layoutIterator.Current.Accept(pageLayout); } while (iterator.MoveNext()) { iterator.Current.Accept(visitor); } return(new ParsingResult(visitor.GenerateResult(request.MaxPages), request, ParsingType.Extract)); } }
private void btnStartHere_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (coloredRange != null) { ResetRange(coloredRange); } doc = richEditControl1.Document.CaretPosition.BeginUpdateDocument(); richEditControl1.Document.ChangeActiveDocument(doc); layoutIterator = new LayoutIterator(richEditControl1.DocumentLayout, doc.Range); RangedLayoutElement el = richEditControl1.DocumentLayout.GetElement(richEditControl1.Document.CaretPosition, LayoutType.PlainTextBox); do { RangedLayoutElement element = layoutIterator.Current as RangedLayoutElement; if ((element != null) && (element.Equals(el))) { UpdateInfoAndSelection(); return; } } while (layoutIterator.MoveNext()); }
void richEditControl1_DocumentLoaded(object sender, EventArgs e) { layoutIterator = new LayoutIterator(richEditControl1.DocumentLayout); }
void richEditControl1_DocumentLoaded(object sender, EventArgs e) { richEditControl1.Dispatcher.BeginInvoke(new Action(() => layoutIterator = new LayoutIterator(richEditControl1.DocumentLayout))); }