Unplanned
Last Updated: 03 May 2024 10:41 by Vitalii
Part of the stack trace: 
System.OutOfMemoryException: Insufficient memory to continue the execution of the program.
   at System.Text.StringBuilder.ExpandByABlock(Int32 minBlockCharCount)
   at System.Text.StringBuilder.AppendWithExpansion(Char value)
   at System.Text.StringBuilder.Append(Char value)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Utilities.CrossReferenceCollectionReader.GetAllText(Reader reader, Int64 minOffset, Int64 maxOffset)
   at Telerik.Windows.Documents.Fixed.FormatProviders.Pdf.Utilities.CrossReferenceCollectionReader.FindAllObjectOffsets(Reader reader, Dictionary`2 tokenToOffsets, Int64 minOffset, Int64 maxOffset)
Unplanned
Last Updated: 30 Apr 2024 13:44 by ADMIN
If the conditional formatting is missing, the copy operation is executed with no errors.
Unplanned
Last Updated: 26 Apr 2024 14:16 by Xiao

This is the code snippet that reproduces the error:

            RadFlowDocument flowDocument = new RadFlowDocument();
            RadFlowDocumentEditor editor = new RadFlowDocumentEditor(flowDocument);
            Bookmark bookmark = new Bookmark(flowDocument, "Name");
            editor.InsertInline(bookmark.BookmarkRangeStart);

            Table table = editor.InsertTable(1, 2);
            TableCell cell1 = table.Rows[0].Cells[0];
            Paragraph cell_paragraph1 = cell1.Blocks.AddParagraph();
            editor.MoveToParagraphStart(cell_paragraph1);
            editor.InsertText("cell content 01");

            TableCell cell2 = table.Rows[0].Cells[1];
            Paragraph cell_paragraph2 = cell2.Blocks.AddParagraph();
            editor.MoveToParagraphStart(cell_paragraph2);
            editor.InsertText("cell content 02");

            editor.MoveToTableEnd(table);
            editor.InsertInline(bookmark.BookmarkRangeEnd); 

            RadFlowDocument newFlowDocument = new RadFlowDocument();
            RadFlowDocumentEditor editor02 = new RadFlowDocumentEditor(newFlowDocument);
            editor.InsertDocument(flowDocument);

Workaround: Insert one bookmark before the table and another one after the table: 

            RadFlowDocument flowDocument = new RadFlowDocument();
            RadFlowDocumentEditor editor = new RadFlowDocumentEditor(flowDocument);
            //Bookmark bookmark = new Bookmark(flowDocument, "Name");
            //editor.InsertInline(bookmark.BookmarkRangeStart);

            editor.InsertBookmark("before");

            Table table = editor.InsertTable(1, 2);
            TableCell cell1 = table.Rows[0].Cells[0];
            Paragraph cell_paragraph1 = cell1.Blocks.AddParagraph();
            editor.MoveToParagraphStart(cell_paragraph1);
            editor.InsertText("cell content 01");

            TableCell cell2 = table.Rows[0].Cells[1];
            Paragraph cell_paragraph2 = cell2.Blocks.AddParagraph();
            editor.MoveToParagraphStart(cell_paragraph2);
            editor.InsertText("cell content 02");

            editor.MoveToTableEnd(table);

            editor.InsertBookmark("after");

            //editor.InsertInline(bookmark.BookmarkRangeEnd); 

            RadFlowDocument newFlowDocument = new RadFlowDocument();
            RadFlowDocumentEditor editor02 = new RadFlowDocumentEditor(newFlowDocument);
            editor.InsertDocument(flowDocument);

 

 

Unplanned
Last Updated: 26 Apr 2024 08:37 by ADMIN

When calling a PDF export in a high-concurrency environment the internal state can get corrupted because it uses a non-thread safe collection internally.

Sample code:

void WriteToPdf(RadFlowDocument document, Stream outputStream) {

   PdfFormatProvider pdfWriter = new() {};

   pdfWriter.Export(document, outputStream);
}

When calling it like this:

Parallel.ForEachAsync(listOfDocuments, (document, _) => {
   WriteToPdf(document, Stream.Null);
});

An exception may occur:

System.InvalidOperationException: Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct.
   at System.Collections.Generic.Dictionary`2.FindValue(TKey key)
   at Telerik.Windows.Documents.Fixed.Model.Fonts.FontsRepository.TryCreateFont(FontFamily fontFamily, FontStyle fontStyle, FontWeight fontWeight, FontBase& font)
   at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.Utils.Extensions.CopyPropertiesFrom(CharacterProperties fixedProperties, PdfExportContext context, CharacterProperties properties)
   at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.Export.PdfExporter.CreateListLevel(ListLevel flowLevel)
   at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.Export.PdfExporter.CreateList(List flowList)
   at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.Export.PdfExporter.ExportDocument(RadFlowDocument document, RadFixedDocumentEditor editor)
   at Telerik.Windows.Documents.Flow.FormatProviders.Pdf.Export.PdfExporter.ExportInternal()
   at Telerik.Windows.Documents.Common.FormatProviders.FormatProviderBase`1.Export(T document, Stream output)
   at xxxxx.Application.Common.PdfGeneration.PdfWriter.WriteToPdf(RadFlowDocument document, Stream outputStream) 

The state is then corrupted forever, until the application is restarted.

Realistic scenario where this is also reproduced: Web application that generates PDFs and is called concurrently.

 

Unplanned
Last Updated: 24 Apr 2024 12:37 by Jean-Pierre
PdfFormatProvider: NetStandard: Converting multiple XLSX copies to PDF with separate SpreadFixedTextMeasurers generates a different first document. 
Unplanned
Last Updated: 24 Apr 2024 08:05 by Sudhakar

Incorrectly resolved fill between local formatting and cell style.

A fill (fillId) of a cell style (cellStyleXfs) is respected instead of the fill (fillId) of the local formatting (cellXfs).

Unplanned
Last Updated: 18 Apr 2024 05:36 by Sujith

This is the code snippet for reproducing the error message: 

        static void Main(string[] args)
        {
            string filePath = "Lorem ipsum dolor sit amet.pdf";
            //load a random document
            PdfFormatProvider provider = new PdfFormatProvider();
            RadFixedDocument originalDocument;
            using (Stream stream = File.OpenRead(filePath))
            {
                originalDocument = provider.Import(stream);
            }
            //draw something on the first page
            FixedContentEditor editor = new FixedContentEditor(originalDocument.Pages[0]);
            editor.GraphicProperties.IsFilled = true;
            editor.GraphicProperties.FillColor = RgbColors.Black;
            Telerik.Documents.Primitives.Rect Rect = new Telerik.Documents.Primitives.Rect(10, 10, 200, 100);
            editor.DrawRectangle(Rect);

            //export the pages as images and build a brand new document from the images
            SkiaImageFormatProvider imageProvider = new SkiaImageFormatProvider();
            imageProvider.ExportSettings.ImageFormat = SkiaImageFormat.Jpeg;
            imageProvider.ExportSettings.ScaleFactor = 0.8;
            imageProvider.ExportSettings.Quality = 80;


            RadFixedDocument doc = new RadFixedDocument();
            foreach (RadFixedPage page in originalDocument.Pages)
            {
                byte[] resultImage = imageProvider.Export(page);
                RadFixedPage pdfpage = doc.Pages.AddPage();
                editor = new FixedContentEditor(pdfpage);
                Stream imageStream = new MemoryStream(resultImage);
                editor.DrawImage(imageStream);
            }

            //export the pdf built from the images
            PdfFormatProvider pdfFormatProvider = new PdfFormatProvider();
            string outputPdf = @"output.pdf";
            File.Delete(outputPdf);
            using (Stream output = File.OpenWrite(outputPdf))
            {
                pdfFormatProvider.Export(doc, output);
            }
            Process.Start(new ProcessStartInfo() { FileName = outputPdf, UseShellExecute = true });
        }

Workaround:

        static void Main(string[] args)
        {
            string filePath = "Lorem ipsum dolor sit amet.pdf";
            //load a random document
            PdfFormatProvider provider = new PdfFormatProvider();
            RadFixedDocument originalDocument;
            using (Stream stream = File.OpenRead(filePath))
            {
                originalDocument = provider.Import(stream);
            }
            //draw something on the first page
            FixedContentEditor editor = new FixedContentEditor(originalDocument.Pages[0]);
            editor.GraphicProperties.IsFilled = true;
            editor.GraphicProperties.FillColor = RgbColors.Black;
            Telerik.Documents.Primitives.Rect Rect = new Telerik.Documents.Primitives.Rect(10, 10, 200, 100);
            editor.DrawRectangle(Rect);

            using (Stream output = File.OpenWrite(filePath))
            {
                provider.Export(originalDocument, output);
            }

            using (Stream stream = File.OpenRead(filePath))
            {
                originalDocument = provider.Import(stream);
            }
            //export the pages as images and build a brand new document from the images
            SkiaImageFormatProvider imageProvider = new SkiaImageFormatProvider();
            imageProvider.ExportSettings.ImageFormat = SkiaImageFormat.Jpeg;
            imageProvider.ExportSettings.ScaleFactor = 0.8;
            imageProvider.ExportSettings.Quality = 80;


            RadFixedDocument doc = new RadFixedDocument();
            foreach (RadFixedPage page in originalDocument.Pages)
            {
                byte[] resultImage = imageProvider.Export(page);
                RadFixedPage pdfpage = doc.Pages.AddPage();
                editor = new FixedContentEditor(pdfpage);
                Stream imageStream = new MemoryStream(resultImage);
                editor.DrawImage(imageStream);
            }

            //export the pdf built from the images
            PdfFormatProvider pdfFormatProvider = new PdfFormatProvider();
            string outputPdf = @"output.pdf";
            File.Delete(outputPdf);
            using (Stream output = File.OpenWrite(outputPdf))
            {
                pdfFormatProvider.Export(doc, output);
            }
            Process.Start(new ProcessStartInfo() { FileName = outputPdf, UseShellExecute = true });
        }

Unplanned
Last Updated: 17 Apr 2024 12:39 by Nathan
Created by: Nathan
Comments: 0
Category: WordsProcessing
Type: Bug Report
1
PdfFormatProvider: TOC entries are blue.
Unplanned
Last Updated: 17 Apr 2024 12:31 by Nathan
TOC list numbering and page numbering are missing.
Unplanned
Last Updated: 17 Apr 2024 12:18 by Nathan
PdfFormatProvider: TOC page numbering is in Roman instead of Arabic numerals.
Unplanned
Last Updated: 15 Apr 2024 13:10 by Belma
Created by: Belma
Comments: 0
Category: WordsProcessing
Type: Bug Report
0
Outline color of some shapes is not respected.
Unplanned
Last Updated: 10 Apr 2024 14:03 by Benjamin

Use the code for inserting the code:

        static void Main(string[] args)
        {
                      Telerik.Windows.Documents.Flow.Model.RadFlowDocument templateDocument = GetDocument("Template.rtf");
            Telerik.Windows.Documents.Flow.Model.RadFlowDocument contentDocument = GetDocument("Content.rtf");
            InsertDocumentOptions options = new InsertDocumentOptions();
            options.ConflictingStylesResolutionMode = ConflictingStylesResolutionMode.RenameSourceStyle;
            options.InsertLastParagraphMarker = true;

            RadFlowDocumentEditor editor = new RadFlowDocumentEditor(templateDocument);
            editor.InsertDocument(contentDocument, options);

            string mergedDocumentFilePath ="MergeDocumentsWithWordsProcessing.rtf";
            File.Delete(mergedDocumentFilePath);
            WriteDocToFile(templateDocument, mergedDocumentFilePath);

        }
        private static Telerik.Windows.Documents.Flow.Model.RadFlowDocument GetDocument(string rtfFilePath)
        {
            Telerik.Windows.Documents.Flow.Model.RadFlowDocument document = null;
            var rtfImporter = new Telerik.Windows.Documents.Flow.FormatProviders.Rtf.RtfFormatProvider();
            using (Stream stream = File.OpenRead(rtfFilePath))
            {
                document = rtfImporter.Import(stream);
            }
            return document;
        }


        private static void WriteDocToFile(Telerik.Windows.Documents.Flow.Model.RadFlowDocument doc, string filename)
        {
            var rtfExporter = new Telerik.Windows.Documents.Flow.FormatProviders.Rtf.RtfFormatProvider();
            string rtfText = rtfExporter.Export(doc);
            File.WriteAllText(filename, rtfText);

            Process.Start(filename);
        }

Observed result: The After spacing is reset

Expected result: keep the style settings from the original documents.

Unplanned
Last Updated: 08 Apr 2024 12:03 by ADMIN

NumberedHierarchical list type has inconsistent indentation after bullets.

Unplanned
Last Updated: 02 Apr 2024 13:27 by Graeme

Original DOCX document:

Exported DOCX document:

Workaround:

            Telerik.Windows.Documents.Flow.Model.RadFlowDocument document;

            Telerik.Windows.Documents.Flow.FormatProviders.Docx.DocxFormatProvider docXprovider = new Telerik.Windows.Documents.Flow.FormatProviders.Docx.DocxFormatProvider();

            using (Stream input = File.OpenRead("PT1987 VU22888 Moodle Specification List [2024032716].docx"))
            {
                document = docXprovider.Import(input);
            }

            string normalStyleId = BuiltInStyleNames.NormalStyleId;
            Style normalStyle = document.StyleRepository.AddBuiltInStyle(normalStyleId);
            normalStyle.ParagraphProperties.SpacingAfter.LocalValue = 0;
            normalStyle.ParagraphProperties.LineSpacing.LocalValue = 1;

Unplanned
Last Updated: 29 Mar 2024 14:03 by Koichi

The visual fill element is not exported to pdf:

Only the text part is present.

Unplanned
Last Updated: 29 Mar 2024 13:27 by Koichi

Import the document with RadSpreadProcessing and export it PDF format. You will notice that the cell value is displayed in the exported PDF document while in the Excel file it is hidden due to the custom format:

Unplanned
Last Updated: 20 Mar 2024 12:49 by Göran

Use the below code snippet to generate XLSX document and export it. You will notice that the export operation is extremely slow:

Stopwatch sw = new Stopwatch();
sw.Start();
IWorkbookFormatProvider formatProvider = new Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.XlsxFormatProvider();
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets.Add();
Worksheet worksheet2 = workbook.Worksheets.Add();
worksheet2.Name ="Days";
List<string> weekdays = new List<string>() { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
for (int i = 0; i < 7; i++)
{
    worksheet2.Cells[0, i].SetValue(weekdays[i]);
}

for (int i = 0; i < 200; i++)
{
    for (int j = 0; j < 10; j++)
    {

        CellIndex cellIndex = new CellIndex(i, j);
        CellSelection selection = worksheet.Cells[cellIndex];
        selection.SetValue("Wednesday");

        var context = new ListDataValidationRuleContext(worksheet, cellIndex)
        {
            InputMessageTitle = "InputMessageTitle",
            InputMessageContent = "InputMessageTitle"
        };

        context.ErrorStyle = ErrorStyle.Stop;
        context.ErrorAlertTitle = "ErrorAlertTitle";
        context.ErrorAlertContent = "ErrorAlertContent";
        context.InCellDropdown = true;
        context.Argument1 = "=Days!A0:A6"; //"Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday";
        ListDataValidationRule rule = new(context);
        worksheet.Cells[cellIndex].SetDataValidationRule(rule);
    }
}

string outputFile = @"..\..\..\output.xlsx";
File.Delete(outputFile);

using (Stream output = new FileStream(outputFile, FileMode.Create))
{

    formatProvider.Export(workbook, output);
}
sw.Stop();
Debug.WriteLine("Export " + sw.ElapsedMilliseconds);

Unplanned
Last Updated: 18 Mar 2024 08:00 by ADMIN
When importing an xlsx document with a comment that does not have an author, an exception is thrown "Sequence contains no matching element" Note that this is a different bug from the very similar SpreadProcessing: Exception "Sequence contains no matching element" thrown in files containing notes or comments (telerik.com)
Unplanned
Last Updated: 12 Mar 2024 13:50 by Stefan

Import the following HTML content:

<ol type="a">
<li>
<div><p>WordsProcessing</p>
</div></li>
<li>
<div>
<p>SpreadProcessing</p>
</div>
</li>
<li>
<div>
<p>PdfProcessing</p>
</div>
</li>
</ol>

The following error occurs:

Unplanned
Last Updated: 11 Mar 2024 16:06 by Foxy
Exporting a PDF documents with 2 pages (that are big images) is slow as hell & consuming way too much memory. (for a 2MiB file, over 2GiB!!!)
1 2 3 4 5 6