Spire.Office.11.4.0 is released

Spire.Office.11.4.0 is released

2026-04-30 10:29:42

We’re pleased to announce the release of Spire.Office 11.4.0. In this version, supports saving charts as templates and supports multidimensional document comparison via new CompareOptions. Spire.XLS enhances stability of PDF and SVG conversion. Spire.Presentation adds support for saving PPTX to video. Spire.PDF optimizes memory consumption during PDF merging and enhances the conversions from PDF to PDF/A and images. Moreover, a large number of known bugs has been fixed successfully in this version.

In this version, the most recent versions of Spire.Doc, Spire.PDF, Spire.XLS, Spire.Presentation, Spire.Barcode, Spire.DocViewer, Spire.PDFViewer, Spire.Email, Spire.Spreadsheet, and Spire.OfficeViewer are included.

DLL Versions:

  • Spire.Doc.dll v14.4.9
  • Spire.Pdf.dll v12.4.5
  • Spire.XLS.dll v16.4.2
  • Spire.Presentation.dll v11.4.5
  • Spire.Barcode.dll v7.5.0
  • Spire.Email.dll v6.8.0
  • Spire.DocViewer.Forms.dll v8.9.5
  • Spire.PdfViewer.Asp.dll v8.2.13
  • Spire.PdfViewer.Forms.dll v8.2.13
  • Spire.Spreadsheet.dll v7.5.3
  • Spire.OfficeViewer.Forms.dll v8.8.1
Click the link to get the version Spire.Office 11.4.0:
More information of Spire.Office new release or hotfix:

Here is a list of changes made in this release

Spre.doc

Category ID Description
Adjustment - Renamed ToPdfParameterList.IsAtlast to ToPdfParameterList.IsAtLeast.
ToPdfParameterList.IsAtlast-->ToPdfParameterList.IsAtLeast
Adjustment - Renamed CompareOptions.IgnoreTable to CompareOptions.IgnoreTables for naming consistency.
New Feature SPIREDOC-10293 Supports saving charts as templates.
Document doc = new Document();
doc.LoadFromFile(inputFile);
int count = 1;
foreach (Section sec in doc.Sections)
{
    foreach (Spire.Doc.Documents.Paragraph paragraph in sec.Paragraphs)
    {
        foreach (DocumentObject obj in paragraph.ChildObjects)
        {
            if (obj is ShapeObject shape)
            {
                Chart chart = shape.Chart;
                if (chart == null)
                    continue;

                string fileName = Path.Combine(outputPath, $"{count}.crtx");
                chart.SaveAsTemplate(fileName);
                count++;
            }
        }
    }
}
New Feature SPIREDOC-11457 Adds the GeneratorName property to allow configuring the Producer metadata when converting to PDF.
string genName = "Testing For Set Producer";
 Document doc = new Document();
 doc.LoadFromFile(filename);
 ToPdfParameterList toPdf = new ToPdfParameterList();
 toPdf.GeneratorName = genName;
 doc.SaveToFile("result.pdf", toPdf);
New Feature SPIREDOC-10828 Adds XValues and YValues properties to retrieve data values for specified series in charts.
Document doc = new Document();
doc.LoadFromFile(inputFile);
StringBuilder sb = new StringBuilder();
int number = 1;

foreach (Section sec in doc.Sections)
{
    foreach (Paragraph paragraph in sec.Paragraphs)
    {
        for (int i = 0; i < paragraph.ChildObjects.Count; i++)
        {
            DocumentObject obj = paragraph.ChildObjects[i];
            if (obj is ShapeObject)
            {
                ShapeObject shape = obj as ShapeObject;
                Chart chart = shape.Chart;
                sb.Append("\r\n\r\nPage " + number + ":\r\n" + "Get all X-axis data: ");
                for (int x = 0; x < chart.XValues.Count; x++)
                {
                    ChartValue xVal = chart.XValues[x];
                    // Get all X-axis data values
                    sb.Append(xVal.StringValue + " "); 
                }
                // Get the first series
                ChartSeries series = chart.Series[0]; 
                sb.Append("\r\nGet Y-axis data: ");
                foreach (ChartValue yVal in series.YValues)
                {
                    // Get all Y-axis data values of the first series
                    sb.Append(yVal.Value + " ");  
                }
            }
        }
    }
    number++;
}
New Feature SPIREDOC-11457 Supports reading and setting chart data label positions.
Document doc = new Document();
foreach (ChartDataLabelPosition position in Enum.GetValues(typeof(ChartDataLabelPosition)))
{
    Section section = doc.AddSection();
    section.AddParagraph().AppendText(position.ToString());
    Spire.Doc.Documents.Paragraph newPara = section.AddParagraph();
    ShapeObject shape = newPara.AppendChart(ChartType.Pie, 500, 300);
    Chart chart = shape.Chart;
    chart.Series[0].HasDataLabels = true;
    chart.Series[0].DataLabels.ShowCategoryName = true;
    chart.Series[0].DataLabels.ShowValue = true;
    // Set position
    chart.Series[0].DataLabels.Position = position;

    ShapeObject shape2 = newPara.AppendChart(ChartType.Bubble, 500, 300);
    Chart chart2 = shape2.Chart;
    chart2.Series[0].HasDataLabels = true;
    chart2.Series[0].DataLabels.ShowCategoryName = true;
    chart2.Series[0].DataLabels.ShowValue = true;
    chart2.Series[0].DataLabels.Position = position;
}
doc.SaveToFile(outputFile, FileFormat.Docx);
doc.Dispose();
New Feature SPIREDOC-11910 Adds several new properties to CompareOptions to support multi-dimensional document comparison:
· CompareMoves: Specifies whether to ignore moved content.
· IgnoreCaseChanges: Specifies whether to ignore case changes.
· IgnoreFields: Specifies whether to ignore fields.
· IgnoreFootnotes: Specifies whether to ignore footnotes.
· IgnoreComments: Specifies whether to ignore comments.
· IgnoreTextboxes: Specifies whether to ignore text boxes.
 Document doc1 = new Document();
            doc1.LoadFromFile(inputFile_1);
            Document doc2 = new Document();
            doc2.LoadFromFile(inputFile_2);

            CompareOptions options = new CompareOptions();
            options.CompareMoves = false;
            options.IgnoreCaseChanges = false;
            options.IgnoreComments = true;
            options.IgnoreFields = true;
            options.IgnoreFootnotes = true;
            options.IgnoreTables = true;
            options.IgnoreTextboxes = true;
            doc1.Compare(doc2, "user", new DateTime(), options);

            doc1.SaveToFile(outputFile, FileFormat.Docx2013);
Bug Fix SPIREDOC-11586 Fixes the issue where tables were converted incorrectly when converting Markdown to Docx or PDF.
Bug Fix SPIREDOC-11854 Fixes the issue where merged cells in tables were split incorrectly.
Bug Fix SPIREDOC-11871 Fixes the issue where a System.InvalidCastException was thrown when merging Word documents.
Bug Fix SPIREDOC-11874 Fixes the issue where a System.NullReferenceException was thrown when loading HTML.

Spre.XLS

Category ID Description
Adjustment SPIREXLS-6127 Corrected the spelling of the SortComparsionType enum to SortComparisonType.
Bug Fix SPIREXLS-6095 Fixed an issue where the text wrapping style did not apply to pivot table cells.
Bug Fix SPIREXLS-6117 Fixed an issue where an ArgumentOutOfRangeException was thrown when loading Excel documents.
Bug Fix SPIREXLS-6126 Fixed an issue where formatting was incorrect when converting Excel to PDF or SVG.

Spire.Presentation

Category ID Description
New Feature SPIREPPT-3096 Added support for saving PPTX files to video formats (.mp4/.wmv).

Note: This feature requires specifying the path to ffmpeg.

Presentation ppt = new Presentation();
            ppt.LoadFromFile(inputFile);
            SaveToVideoOption saveOption = new SaveToVideoOption(ffmpegDir);
            ppt.SaveToVideoOption=saveOption;//Default: 5 seconds per slide.
            ppt.SaveToFile(outputFile_mp4, FileFormat.MP4);
            ppt.SaveToFile(outputFile_wmv, FileFormat.WMV);
            ppt.Dispose();
Bug Fix SPIREPPT-3092 Fixed an issue where data label formatting was incorrect when converting PowerPoint files to PDF.
Bug Fix SPIREPPT-3094 Fixed an issue where an InvalidOperationException was thrown when converting shapes to SVG.
Bug Fix SPIREPPT-3097 Fixed an issue where exported files had excessively large sizes when splitting PowerPoint presentations.
Bug Fix SPIREPPT-3098 Fixed an issue where shapes were clipped during PowerPoint to PDF conversion.
Bug Fix SPIREPPT-3099 Fixed an issue where some images were missing when converting slides to images.
Bug Fix SPIREPPT-3102 Fixed an issue where extra incorrect images appeared during PowerPoint to PDF conversion.

Spire.PDF

Category ID Description
Optimization SPIREPDF-7878 SPIREPDF-7958 Optimized memory consumption during PDF merging.
Bug Fix SPIREPDF-7850 Fixed an issue where removing image watermarks from PDFs failed.
Bug Fix SPIREPDF-7963 Fixed an issue where keywords were not correctly identified when using “TextFindParameter.WholeWord”.
Bug Fix SPIREPDF-7980 Fixed an issue where content stream markers did not correctly include attribute placeholders when an “ArtifactPropertyList” object was passed to the “BeginMarkedContent” method.
Bug Fix SPIREPDF-7164 Fixed the issue where the page content was distorted when copying a page via CreateTemplate().
Bug Fix SPIREPDF-7803 Fixed the issue where concurrent HTML to PDF conversions occasionally failed to generate documents.
Bug Fix SPIREPDF-7948 Fixed the issue where printing a PDF produced extra, unintended content.
Bug Fix SPIREPDF-7984 Fixed the issue where text box fields with the same name could not be associated.
Bug Fix SPIREPDF-7998 Fixed the issue where content went missing when converting PDF to images.
Bug Fix SPIREPDF-8003 Fixed the issue where the program threw an ArgumentOutOfRangeException when merging PDFs.
Bug Fix SPIREPDF-8004 Fixed the issue where the program threw an ArgumentOutOfRangeException when merging PDF documents without applying a license.
Bug Fix SPIREPDF-8010 Fixed the issue where the description in document properties was incorrect when converting PDF to PDF/A.
Bug Fix SPIREPDF-8014 Fixed the issue where the position and size information of videos in PDF files could not be retrieved.