Text Position
The TextPosition class allows you to keep track of the current text caret position in the document.
TextPositionis part of the RadPdfProcessing library which is used for the document model of the PdfViewer.
The text position is useful for the UI only when you activate the TextSelection viewer mode. To do so, set the Mode property of the PdfViewer. For more information, refer to the article on the PdfViewer interaction modes.
Select the TextSelection mode
this.pdfViewer.Mode = FixedDocumentViewerMode.TextSelection;
Manual Text Positioning
To change the caret position manually, use the CaretPosition property of the RadFixedDocument class that can be accessed through the Document property of the PdfViewer. The caret position is represented by the TextPosition class which provides the following methods for updating the position:
MoveToNextPositionMoveToPreviousPositionMoveToPositionMoveToNextWordMoveToPreviousWordMoveToCurrentWordStartMoveToCurrentWordEndMoveToLineStartMoveToLineEndMoveLineUpMoveLineDownMoveToStartOfDocumentMoveToEndOfDocument
Use the Move method
this.pdfViewer.Document.CaretPosition.MoveToEndOfDocument();
Move methods will also scroll the document to bring the corresponding line into the viewport.
To select a position based on an position index in the document, initialize a new TextPosition object with the constructor overload where you provide a RadFixedPage and an offset.
Move to a specific text position
RadFixedDocument document = this.pdfViewer.Document;
RadFixedPage firstPage = document.Pages[0];
// This is the 100th character in the first page of the document.
TextPosition position = new TextPosition(firstPage, 100);
this.pdfViewer.Document.CaretPosition.MoveToPosition(position);
Events
TextPosition provides the PositionChanging and PositionChanged events that can be used to listen for changes in the position.
Subscribe to position-changing events
void SubscribeToEvents()
{
this.pdfViewer.Document.CaretPosition.PositionChanged += Position_PositionChanged;
this.pdfViewer.Document.CaretPosition.PositionChanging += Position_PositionChanging;
}
private void Position_PositionChanging(object sender, EventArgs e)
{
}
private void Position_PositionChanged(object sender, EventArgs e)
{
}