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)
When the background is defined for a table or a cell, it should be inherited by the paragraphs inside. Currently, the paragraphs are with the background defined in the default style.
When the position on which the users right-click is an annotation start or end marker, the context menu doesn't provide suggestions about spellcheck errors. Steps to reproduce: 1. Type "The greater the better" in RadRichTextBox with enabled spellchecking 2. Turn on track changes 3. Move the caret to the 't' of "greater" 4. Insert 't' so the word becomes wrong 5. Right-click on the 't' letter inserted in step 4 Observed: The context menu doesn't show suggestions for fixing the misspelled word Expected: The context menu should suggest a fix
Paragraph spacing from table style is not exported for each paragraph inside the table. The table style defines paragraph properties which should be respected when exporting the styles to HTML. Workaround: Apply the paragraph settings coming from the table style directly to the elements.foreach
(var table
in
radRichTextBox.Document.EnumerateChildrenOfType<Table>())
{
foreach
(var paragraph
in
table.EnumerateChildrenOfType<Paragraph>())
{
paragraph.LineSpacing = table.Style.ParagraphProperties.LineSpacing;
paragraph.LineSpacingType = table.Style.ParagraphProperties.LineSpacingType;
paragraph.AutomaticSpacingAfter= table.Style.ParagraphProperties.AutomaticSpacingAfter;
paragraph.AutomaticSpacingBefore = table.Style.ParagraphProperties.AutomaticSpacingBefore;
paragraph.SpacingAfter = table.Style.ParagraphProperties.SpacingAfter;
paragraph.SpacingBefore = table.Style.ParagraphProperties.SpacingBefore;
}
}
The customers need to customize the dialogs for opening and saving a file. For example, they need to set a default path or extension. With the current implementation, this can be achieved by customizing the commands. Expose an API allowing them to achieve that easily.
Font weight, size and other current editing style properties are not preserved when Shift + Enter key combination is used and the user continues typing. Note: this is true not only for font weight but for other styling properties such as size, italic etc.
"Win32Exception (0x80004005): Not enough storage is available to process this command" is thrown when multiple RadDocument instances are created in background threads. This is due to the fact that RadDocument contains MailMergeDataSource object, which is DependencyObject. When multiple dependency objects are created in different threads, they are not property freed by thread's Dispatcher. Workaround 1: Microsoft provided workaround in a bug report here: https://connect.microsoft.com/VisualStudio/feedback/details/620588/system-componentmodel-win32exception-0x80004005-not-enough-storage-is-available-to-process-this-command , namely: ------------------------------ Put the following code: Dispatcher dispatcher = Dispatcher.CurrentDispatcher; dispatcher.BeginInvokeShutdown(DispatcherPriority.Normal); Dispatcher.Run(); anywhere in the background thread processing the RadDocument. ----------------------------- Workaround 2: Use pooling of the used threads. The problem is that Task Parallel Library (which has built-in pooling) does not use STA threads by default, but this can be achieved by using custom TaskScheduler (attached, the code is get from here: https://code.msdn.microsoft.com/ParExtSamples ): var parallelOptions = new ParallelOptions() { TaskScheduler = new StaTaskScheduler(Environment.ProcessorCount) }; Parallel.For(0, 10000, parallelOptions, cc => { var document = new DocxFormatProvider().Import(data); byte[] pdfBytes = new PdfFormatProvider().Export(document); };
When a table in HTML document has width set to 0 (through an attribute or CSS style), the table is imported with 0 width in the document model. This makes the content unreadable. Instead, such width should be treated as if width is not set at all - this way the layout will use only the widths set to the cells. Workaround: Clear the PreferredWidth property if it is 0. var tables = this.radRichTextBox.Document.EnumerateChildrenOfType<Table>(); foreach (var table in tables) { if (table.PreferredWidth.Value == 0) { table.PreferredWidth = null; } } Fix available in LIB Version 2018.1.326.
Add support for FILENAME field. The field could be evaluated using the last opened/saved file name. Description:https://support.office.com/en-us/article/field-codes-filename-field-a2946f1b-d822-47dc-ba32-4482aece26bc?ui=en-US&rs=en-US&ad=US
Add support for CREATEDATE field. The field is evaluated using the document metadata. Description: https://support.office.com/en-us/article/field-codes-createdate-field-440080d1-2d34-494f-bdca-9d451d659d46?ui=en-US&rs=en-US&ad=US
Add support for USERNAME field. The field is evaluated using the document metadata. Description: https://support.office.com/en-us/article/field-codes-username-field-f564f516-823f-4fb9-9da8-9b6312148053?ui=en-US&rs=en-US&ad=US