Loading large documents freezes the UI. Instead, the document could be imported and measured asynchronously in a background thread, and some progress indicator shown to the user.
Note: Image sources should be frozen when the document is loaded in a background thread.
Workaround: Following the steps:
- Import the document in a background thread using the specific format provider.
- Freeze all images in the document using the methods in the attached file.
- Set the document to RadRichTextBox in the main thread using a dispatcher: this.Dispatcher.Invoke(new Action(() => { this.radRichTextBox.Document = document; }));
Implement an option for the customers to split a document into two views, allowing them to edit and view different parts of the document at the same time.
When a hyperlink (and only the hyperlink) is selected, and the user types over the selection, the hyperlink is deleted, and text with locally set blue fore color and blue underline is inserted. Instead, the hyperlink should be preserved, and just its link text should be modified.
The custom list styles from a document exported by RadRichTextBox's HtmlFormatProvider are not imported.
Annotation Ranges where SkipPositionBefore is set to false on the AnnotationRangeEnd cause cursor jumps when deleting content to the right of the Annotation Range. Steps to reproduce: 1. Open a job with Annotation Ranges where SkipPositionBefore is set to false on the AnnotationRangeEnd (I used the Document Protection sample in the demo app) 2. Move your cursor to the end of the range. 3. Hit the delete key Expected: The cursor remains at the end of the AnnotationRange and content to the right is deleted. Actual: Content to the right is deleted but eventually the cursor will jump to the right by one position and end up outside the Annotation Range.
When there is a hyperlink enclosed in another annotation (e.g comment, bookmark, read-only range), and the user moves the caret position just before or just after the hyperlink, and starts typing there, the text is inserted with the style of the hyperlink (by default, blue with blue underline). Instead, the text should be inserted without such style.
The TxtFormatProvider always imports the document with UTF8 encoding. It will be great if users could change this setting in order to import document with different encodings.
Deleting table right after merged fields are updated causes StackOverflowException.
The caret gets a wrong size when positioned on annotation start/end.
Currently, RadRichTextBox only imports from HTML documents tables with spacing between cells, but it does not export tables with such style. It seems like the border-collapse: collapse value defined in the Table Normal style overrides the border-spacing value, which is applied to the cells. As a workaround, the document styles can be omitted from the exported HTML and the styling can be exported inline be changing the ExportSettings of HtmlFormatProvider: provider.ExportSettings.StylesExportMode = StylesExportMode.Inline; provider.ExportSettings.StyleRepositoryExportMode = StyleRepositoryExportMode.DontExportStyles;
Using Microsoft Pinyin IME for typing in the RichTextBox causes FatalExecutionEngineError exception.
Currently there are three places in the UI which contain a list of font sizes which could be applied to the content, and all of them could be customized separately: - RadRichTextBoxRibbonUI - could be customized by directly editing the content of the ribbon in the XAML file. - FontPropertiesDialog - could be customized by replacing the whole dialog (as SDK is available: https://github.com/telerik/xaml-sdk/tree/master/RichTextBox/CustomFontPropertiesDialog ), or a little hacky approach using the FindName method: ((ListBox)((Control)this.radRichTextBox.FontPropertiesDialog).FindName("fontSizeListBox")).ItemsSource = new List<double> { 10, 14, 16, 18, 20 }; - SelectionMiniToolBar - could be customized by changing the template of SelectionMiniToolBar Provide API which allows customization at a single place. This API could be similar to (or even extension of) the already available Telerik.Windows.Document.Layout.FontManager class.
Having a table with specified RowSpan and further exported to PDF does not draw the border. This is due to export optimization caused by the fact whether there is or is not a CellSpacing specified. Workaround: Set really small CellSpacing for the table.
When document with TOC field is exported to PDF, the hyperlinks in the TOC field are exported with blue fore color and blue underline (with the default hyperlink styling). Instead, they should be exported with the fore color visible in the document.
Workaround: Clear the hyperlink style from the spans inside the TOC:
var firstTocRange = this.radRichTextBox.Document.EnumerateChildrenOfType<FieldRangeStart>().Where(frs => frs.Field is TableOfContentsField).First();
this.radRichTextBox.Document.Selection.SelectAnnotationRange(firstTocRange);
foreach (var spanLayoutBox in this.radRichTextBox.Document.Selection.GetSelectedBoxes<SpanLayoutBox>())
{
spanLayoutBox.AssociatedSpan.Style = null;
}
Inserting image inline from stream changes its size dramatically. Run the following code to reproduce: RadDocument document = new RadDocument(); RadDocumentEditor editor = new RadDocumentEditor(document); //editor.Insert("some text"); using (FileStream stream = File.OpenRead(@"C:\Temp\picture.jpg")) { editor.InsertImage(stream, ".png"); } File.WriteAllBytes($@"d:\Temp\test\test_doc.pdf", new PdfFormatProvider().Export(document)); The issue is observable after 2017.2.614.
There are a number of Bitmap objects that are not disposed. Changing this behavior could improve the memory usage when exporting PDF documents.
If a document does not have definition for font size in all levels of the font hierarchy, then all runs that do not have font size set locally, will be imported with font size 9.5. In Microsoft Word, in this case, the font size value is 10. Workaround: Set the FontSize of the default document style after the document is imported: RadDocument reportDocument1; using (FileStream inputStream = new FileStream(@"C:\Original.docx", FileMode.Open)) { reportDocument1 = provider1.Import(inputStream); reportDocument1.StyleRepository[RadDocumentDefaultStyles.DefaultDocumentStyleName].SpanProperties.FontSize = Unit.PointToDip(10); } using (FileStream output = new FileStream(@"C:\test.docx", FileMode.OpenOrCreate)) { provider1.Export(reportDocument1, output); }
When pasting a big image in RichTextBox, it is pasted with its original size. It should be resized so it can fit on the page. Similar logic is available in the InsertPictureCommand. Workaround: private void RadRichTextBox_CommandExecuting(object sender, CommandExecutingEventArgs e) { if (!(e.Command is PasteCommand)) { return; } DocumentFragment res = ClipboardEx.GetDocumentFromClipboard("RadDocumentGUID"); if (res == null) { foreach (ClipboardHandler settings in ClipboardEx.ClipboardHandlers) { res = ClipboardEx.GetDocumentFromClipboard(settings.ClipboardDataFormat, settings.ClipboardStringFilter); } } if (res == null) { e.Cancel = true; var bitmapSource = Clipboard.GetImage(); if (bitmapSource == null) { return; } Padding sectionmargin = this.radRichTextBox.Document.CaretPosition.GetCurrentSectionBox().AssociatedSection.ActualPageMargin; double originalPixelWidth = bitmapSource.Width; double originalPixelHeight = bitmapSource.Height; if (originalPixelWidth == 0 || originalPixelHeight == 0) { originalPixelWidth = 10; originalPixelHeight = 10; } double width = originalPixelWidth; double height = originalPixelHeight; if (this.radRichTextBox.Document.LayoutMode == DocumentLayoutMode.Paged) { Section currentSection = this.radRichTextBox.Document.CaretPosition.GetCurrentSectionBox().AssociatedSection; var pageSize = (SizeF) currentSection.GetType().GetProperty("ActualPageSize", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(currentSection, null); double maxWidth = pageSize.Width - (sectionmargin.Left + sectionmargin.Right); double maxHeight = pageSize.Height - (sectionmargin.Top + sectionmargin.Bottom); width = Math.Min(maxWidth, width); height = Math.Min(maxHeight, height); } double ratio = originalPixelWidth / originalPixelHeight; width = Math.Min(width, height * ratio); height = width / ratio; Size size = new Size(width, height); ImageInline imageInline = new ImageInline(new WriteableBitmap(bitmapSource)); imageInline.Size = size; this.radRichTextBox.ActiveDocumentEditor.InsertInline(imageInline); } }
The "Text Wrapping" string, used in the FloatingBlockPropertiesDialog lacks translations in Spanish and French. In the English and Turkish values, a space is missing between the words. Fix available in LIB Version 2018.1.416.
- Localization for "Simple text" in the Define New List Style dialog and Define New Style dialog at RadRichTextBox. - Levels (from 1st to 9th) are hardcoded in dialog's code behind and cannot be localized. (these are the items in the 'Apply Formatting to' comboBox)