In Development
Last Updated: 13 Jun 2025 13:54 by ADMIN
Unplanned
Last Updated: 13 Jun 2025 10:08 by ADMIN

In the 2025 version of the Documents packages, "TimeSpan? timeout" were added to a number of interfaces, with the old versions obsoleted, for example: IWorkbookFormatProvider.Import & IWorkbookFormatProvider.Export.

This is a very strange choice, because this limits the flexibility of the interfaces for no reason at all. By only providing the TimeSpan parameter and not a CancellationToken is currently impossible to cancel the operation because e.g. an API request was canceled.

Internally these methods are implemented by first creating a cancellation token using

using CancellationTokenSource cancellationTokenSource = CancelationTokenSourceFactory.CreateTokenSource(timeout);

the token from this CancellationTokenSource is then passed to a protected method. Because this internal method uses a CancellationToken anyway, there is practically 0 development cost to exposing this in the interface, which makes the choice not to do so even more confusing.

The interfaces should expose methods that take a CancellationToken instead of a TimeSpan. This would allow for the same functionality as the TimeSpan parameter, by simply passing a cancellation token with a CancelAfter set with a TimeSpan, and an extension method could be provided for the interface which does exactly that, so users can still call these methods with a TimeSpan parameter if they wish to do so for convenience.

Please, in the next version, make these interfaces methods like this:

Workbook Import(Stream input, CancellationToken cancellationToken = default);
void Export(Workbook workbook, Stream output, CancellationToken cancellationToken = default);

and, for convenience, add extension methods for these like this:

public static class WorkbookFormatProviderExtensions
{
    public static Workbook Import(this IWorkbookFormatProvider workbookFormatProvider, Stream input, TimeSpan? timeout)
    {
        using CancellationTokenSource cancellationTokenSource = CancelationTokenSourceFactory.CreateTokenSource(timeout);
        return workbookFormatProvider.Import(input, cancellationTokenSource.Token);
    }
}

Affected interfaces I've run into so far:

  • Telerik.Windows.Documents.Spreadsheet.FormatProviders.IWorkbookFormatProvider
  • Telerik.Windows.Documents.Common.FormatProviders.IFormatProvider<T>

There may be more with this same pattern, I haven't checked.

Completed
Last Updated: 12 Jun 2025 09:50 by Flemming
Release 2025.2.520 (2025 Q2)
This is a sample code to replicate the error which is triggered on export: 
            string inputFileName = "input.xlsx";
            if (!File.Exists(inputFileName))
            {
                throw new FileNotFoundException(String.Format("File {0} was not found!", inputFileName));
            }

            Telerik.Windows.Documents.Spreadsheet.Model.Workbook workbook;
            IWorkbookFormatProvider formatProvider = new Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.XlsxFormatProvider();

            using (Stream input = new FileStream(inputFileName, FileMode.Open))
            { 
                workbook = formatProvider.Import(input, TimeSpan.MaxValue);
            }
            string outputFilePath = "output.xlsx";

            using (Stream output = new FileStream(outputFilePath, FileMode.Create))
            {
                formatProvider.Export(workbook, output, TimeSpan.MaxValue);
            }
            Process.Start(new ProcessStartInfo() { FileName = outputFilePath, UseShellExecute = true });
Unplanned
Last Updated: 12 Jun 2025 08:44 by Lorenzo
Created by: Lorenzo
Comments: 0
Category: SpreadProcessing
Type: Feature Request
0
Add support for Stock charts (StockChart).
Pending Review
Last Updated: 11 Jun 2025 13:50 by Piet

Read the documentation for CancelationTokenSource.CancelAfter:

this method will throw an ArgumentOutOfRangeException when: delay.TotalMilliseconds is less than -1 or greater than Int32.MaxValue (or UInt32.MaxValue - 1 on some versions of .NET). Note that this upper bound is more restrictive than TimeSpan.MaxValue.

----------------------------------------------------

your code in CancelationTokenSourceFactory.CreateTokenSource does this check:

if (timeSpan.HasValue && timeSpan.Value != TimeSpan.MaxValue)

this check for TimeSpan.MaxValue seems totally pointless here, if timeSpan is anything between ~2147483647 and 922337203685476 milliseconds long this will still just throw a ArgumentOutOfRangeException.

I suspect that this check was intended as a way to prevent creating a cancellation timer that never triggers in the CancellationTokenSource, which should look like this:

if (timeSpan.HasValue && timeSpan != Timeout.InfiniteTimeSpan) //Timeout.InfiniteTimeSpan is -1 milliseconds
which still seems like premature optimization with no noticeable benefit but at least it isn't completely pointless.
Unplanned
Last Updated: 09 Jun 2025 10:20 by Heidi

NullReferenceException when inserting a document containing a table with a document variable having a line break (\n) in its value.

Unplanned
Last Updated: 06 Jun 2025 14:56 by ADMIN
ADMIN
Created by: Deyan
Comments: 10
Category: SpreadProcessing
Type: Feature Request
32
Add support for pivot tables.
In Development
Last Updated: 06 Jun 2025 07:10 by ADMIN
Wrong clipping order when exporting a document with MarkedContent leads to a missing content.
Unplanned
Last Updated: 05 Jun 2025 11:46 by ADMIN
Add API that allows one to manipulate the macros inside a Workbook.
Unplanned
Last Updated: 04 Jun 2025 12:33 by Sailaja
Stacktrace: 
   at System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
   at System.Collections.Generic.Dictionary`2.FindValue(TKey key)
   at System.Collections.Generic.Dictionary`2.ContainsKey(TKey key)
   at Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx.Model.Elements.Worksheets.ConditionalFormattingRuleElementX14.OnAfterRead(IXlsxWorksheetImportContext context) in C:\Work\document-processing\Documents\Spreadsheet\FormatProviders\OpenXml\Xlsx\Model\Elements\Worksheets\ConditionalFormatting\x14\ConditionalFormattingRuleElementX14.cs:line 62
Duplicated
Last Updated: 03 Jun 2025 13:56 by ADMIN
Created by: Brian
Comments: 1
Category: SpreadProcessing
Type: Feature Request
2
Charts in excel have support for minor grid lines. This is not supported here.
Duplicated
Last Updated: 03 Jun 2025 13:02 by ADMIN
Created by: Brian
Comments: 1
Category: Telerik Document Processing
Type: Feature Request
1
In charts it should be possible to axis titles.
Unplanned
Last Updated: 03 Jun 2025 10:23 by Rey
Add support for "AcroSendMail:SendMail" named action.
Unplanned
Last Updated: 03 Jun 2025 05:57 by Eli
Such a document can be considered as invalid. However, it would be good to provide functionality to handle it.  
Unplanned
Last Updated: 30 May 2025 08:16 by ADMIN
ADMIN
Created by: Martin
Comments: 0
Category: PdfProcessing
Type: Feature Request
0
Part 3 of the standard, published on October 15, 2012, differs from PDF/A-2 in only one regard: it allows embedding of arbitrary file formats (such as XML, CSV, CAD, word-processing documents, spreadsheet documents, and others) into PDF/A conforming documents.
Unplanned
Last Updated: 28 May 2025 07:54 by ADMIN
ADMIN
Created by: Martin
Comments: 0
Category: PdfProcessing
Type: Feature Request
0

Purpose: Long-term archiving of electronic documents with full semantic structure.

  • "A" for Archiving
  • Level "1a" ensures:

    • Tagged PDF (with proper logical structure and reading order)

    • Unicode text for proper text extraction and searchability

    • Embedded fonts (for consistent rendering)

  • Restrictions:

    • No audio/video

    • No encryption

    • No JavaScript

    • No external content (everything must be self-contained)

  • Based on: PDF 1.4 (Acrobat 5)

Unplanned
Last Updated: 27 May 2025 11:03 by Thomas
PdfProcessing: ArgumentException is thrown when importing a document with a duplicated filed names.
Unplanned
Last Updated: 27 May 2025 10:24 by Thomas
Handle the import of documents when the GoToR action`s file specification object is a string.
Unplanned
Last Updated: 26 May 2025 12:28 by ADMIN
Completed
Last Updated: 22 May 2025 14:26 by Diego
Release 2025.2.520 (2025 Q2)
Wrong font loading when FontFile2 is CFF (Compact Font Format).
1 2 3 4 5 6