We’re pleased to announce the release of Spire.Doc for C++ 14.1.4. This version synchronizes several features from the .NET version of Spire.Doc, focusing mainly on table and list-related functionalities. More details are as follows.

Here is a list of changes made in this release

Category ID Description
New feature - Added the add(ListTemplate template) method to ListCollection to create multi-level lists from built-in templates.
int firstColumn = doc->GetBookmarks()->FindByName(L"t_insert")->GetFirstColumn();
int lastColumn = doc->GetBookmarks()->FindByName(L"t_insert")->GetLastColumn();
New feature - Added SetStyle, SetStyleOptions, and SetStyleName properties to the TableFormat class for table style operations.
intrusive_ptr<TableStyle> tableStyle = Object::Dynamic_cast<TableStyle>(
    doc->GetStyles()->Add(StyleType::TableStyle, L"TestTableStyle1")
);
tableStyle->GetBorders()->SetColor(Color::GetBlue());
tableStyle->GetBorders()->SetBorderType(BorderStyle::Single);
tableStyle->SetHorizontalAlignment(RowAlignment::Center);

intrusive_ptr<Table> table = sec->AddTable();
table->ResetCells(1, 1);
table->GetRows()->GetItemInRowCollection(0)
    ->GetCells()->GetItemInCellCollection(0)
    ->AddParagraph()->AppendText(L"Aligned to the center of the page");
table->SetPreferredWidth(PreferredWidth::FromPoints(300));
table->ApplyStyle(tableStyle);

sec->AddParagraph()->AppendText(L"");
tableStyle = Object::Dynamic_cast<TableStyle>(
    doc->GetStyles()->Add(StyleType::TableStyle, L"TestTableStyle2")
);
tableStyle->SetLeftIndent(55);
tableStyle->GetBorders()->SetColor(Color::GetGreen());
tableStyle->GetBorders()->SetBorderType(BorderStyle::Single);

table = sec->AddTable();
table->ResetCells(1, 1);
table->GetRows()->GetItemInRowCollection(0)
    ->GetCells()->GetItemInCellCollection(0)
    ->AddParagraph()->AppendText(L"Aligned according to left indent");
table->SetPreferredWidth(PreferredWidth::FromPoints(300));
table->GetFormat()->SetStyle(tableStyle);


intrusive_ptr<TableStyle> tableStyle = Object::Dynamic_cast<TableStyle>(
    doc->GetStyles()->Add(StyleType::TableStyle, L"TestTableStyle1")
);

tableStyle->GetBorders()->SetColor(Color::GetBlack());
tableStyle->GetBorders()->SetBorderType(BorderStyle::Double);
tableStyle->SetRowStripe(3);
tableStyle->GetConditionalStyles()->GetItem(TableConditionalStyleType::OddRowStripe)
    ->GetShading()->SetBackgroundPatternColor(Color::GetLightBlue());
tableStyle->GetConditionalStyles()->GetItem(TableConditionalStyleType::EvenRowStripe)
    ->GetShading()->SetBackgroundPatternColor(Color::GetLightCyan());
tableStyle->SetColumnStripe(1);
tableStyle->GetConditionalStyles()->GetItem(TableConditionalStyleType::EvenColumnStripe)
    ->GetShading()->SetBackgroundPatternColor(Color::GetLightPink());

table->ApplyStyle(tableStyle);
table->GetFormat()->SetStyleOptions(TableStyleOptions::ColumnStripe);


tableStyle = Object::Dynamic_cast<TableStyle>(
    doc->GetStyles()->Add(StyleType::TableStyle, L"TestTableStyle3")
);
tableStyle->SetLeftIndent(55);
tableStyle->GetBorders()->SetColor(Color::GetGreen());
tableStyle->GetBorders()->SetBorderType(BorderStyle::Single);
tableStyle->SetHorizontalAlignment(RowAlignment::Right);

table = sec->AddTable();
table->ResetCells(1, 1);
table->GetRows()->GetItemInRowCollection(0)
    ->GetCells()->GetItemInCellCollection(0)
    ->AddParagraph()->AppendText(L"Aligned according to left indent");
table->SetPreferredWidth(PreferredWidth::FromPoints(300));
table->GetFormat()->SetStyleName(L"TestTableStyle3");
New feature - Added the RemoveSelf method to the Style class to remove a style.
document->GetStyles()->GetItem(L"Normal")->RemoveSelf();
New feature - Enhanced the Document class with page extraction (ExtractPages), first section access (FirstSection), and hyphenation dictionary registration/unregistration support (RegisterHyphenationDictionary, UnregisterHyphenationDictionary, IsHyphenationDictionaryRegistered).
New feature - Added the DocumentNavigator class, which provides a “virtual cursor”-based API for easily inserting text, paragraphs, lists, tables, images, checkboxes, OLE objects, and more into Word documents with style control.
intrusive_ptr<Document> doc = ConvertUtil::GetNewEngineDocument();
intrusive_ptr<DocumentNavigator> navigator = new DocumentNavigator(doc);
doc->LoadFromFile(inputFile.c_str());
navigator->MoveToDocumentStart();
navigator->Writeln(L"Test insert at DocumentStart");
navigator->Writeln(L"Test insert without move");
navigator->MoveToDocumentEnd();
navigator->Writeln(L"Test insert at DocumentEnd");

doc->SaveToFile(outputFile.c_str(), FileFormat::Docx);
doc->Close();
New feature - Added fine-grained formatting capabilities to core document elements including paragraphs, tables, cells, borders, and styles.
Class New Members Description
Paragraph GetText Gets the text content of a paragraph.
Table SetBorders,
ClearBorders
Sets table border style.
Clears all table border formatting.
CellFormat ClearFormatting Clears all cell formatting.
Borders ClearFormatting IsShadow Clears border formatting. Controls whether the border displays a shadow effect.
RowFormat ClearBackground Height Clears row background color. Sets row height.
StyleCollection Add (overload) Added an overloaded method for adding styles.
PreferredWidth FromPercent FromPoints Width data types.
CharacterFormat LocaleIdBi Supports bidirectional text locale settings.
Frame IsFrame Determines whether the object is a Frame.
OfficeMath ToLaTeXMathCode FromOMMLCode Converts a math object to LaTeX math code. Creates a math object from an OMML string.
New feature - Enhanced revision tracking, content controls, and document comparison features.
Class New Members Description
CompareOptions IgnoreTable, IgnoreHeadersAndFooters Allows ignoring table content or headers/footers during comparison.
DifferRevisions MoveToRevisions, MoveFromRevisions Gets “move-to” and “move-from” type revisions.
StructureDocumentTag* (including Cell/Inline/Row) RemoveSelfOnly Removes only the content control itself while preserving its contents.
New feature - Improved accessibility and export functionality.
Class New Members Description
ToPdfParameterList PdfImageCompression, DigitalSignatureInfo Configures image compression and digital signature info when saving to PDF.
Document MarkdownExportOptions, ListReferences Supports Markdown export options and list references.
New feature - Refactored the list system.
Class Members Description
ListFormat ApplyStyle, ApplyListRef Supports direct style application and list reference usage.
ListLevel Equals, CreatePictureBullet, DeletePictureBullet, PictureBullet Supports picture bullets and equality comparison.
ListStyle ListRef, BaseStyle Supports list references and base styles.
Document ListReferences Gets the collection of list references in the document.
New feature - Optimized and cleaned up APIs by removing redundant or poorly designed properties and methods to improve overall consistency, such as removing outdated export methods like OfficeMath.SaveToImage and SaveImageToStream.
Click the link below to download Spire.Doc for C++ 14.1.4:

We're pleased to announce the release of Spire.XLS for Java 16.1.3. This version supports inserting/ retrieving/ updating equations, and also supports the F.INV and T.INV.2T functions. Furthermore, several issues that occurred when processing and converting Excel files (e.g., HTML to Excel, Excel to PDF) have been successfully fixed. More details are listed below.

Here is a list of changes made in this release

Category ID Description
New feature SPIREXLS-5237 Added support for inserting, retrieving, and updating equations.
// Insert an equation
sheet.getEquations().addEquation(11, 0, 100, 100, "x_{1}^{2}");

// Retrieve an equation
String mathML = sheet.getEquations().get(0).exportMathML();
String latex = sheet.getEquations().get(0).exportLaTeX();

// Update an equation
IXlsEquation equation1 = sheet.getEquations().get(0);
equation1.updateByLaTeXText("\\begin{pmatrix} \r\n  1 & 0 \\\\ \r\n  0 & 1 \r\n \\end{pmatrix} \r\n \\left(x-1\\right)\\left(x+3\\right)");
New feature SPIREXLS-6047 Added support for the F.INV function.
worksheet.getCellRange("A2").setFormula("=F.INV(0.99, 100, 200)");
New feature SPIREXLS-6048 Added support for the T.INV.2T function.
worksheet.getCellRange("A2").setFormula("=T.INV.2T(0.05, 10)");
Bug SPIREXLS-6045 Fixed an issue where an “ArrayIndexOutOfBoundsException” was thrown when converting HTML to Excel.
Bug SPIREXLS-6053 Fixed an issue where formula calculation took an excessively long time.
Bug SPIREXLS-6056 Fixed an issue where formulas displayed an unexpected blue background when converting XLSX to XLS.
Bug SPIREXLS-6058 Fixed an issue where extra borders appeared in the output when converting Excel to PDF.
Bug SPIREXLS-6062 Fixed an issue where a “NullPointerException” occurred when saving XLS files to XLSX format.
Bug SPIREXLS-6064 Fixed an issue where copying cell content containing embedded images to another Excel workbook failed.
Bug SPIREXLS-6066 Fixed an issue where a “NullPointerException” was thrown during Excel-to-PDF conversion.
Bug SPIREXLS-6067 Fixed an issue where local image files could not be deleted after inserting pictures into Excel due to unreleased file handles.
Click the link to download Spire.XLS for Java 16.1.3:

We're pleased to announce the release of Spire.PDF for Java 12.1.4. This version adds support for saving PDF comparison results directly to file streams. In addition, multiple issues related to PDF conversion, rendering, printing, and stability have been fixed, with further improvements made to performance and layout accuracy. More details are listed below.

Here is a list of changes made in this release

Category ID Description
New feature SPIREPDF-7880 Added support for saving PDF comparison results to file streams.
// Create a new PdfDocument object 'pdf1' to work with the first PDF file
        PdfDocument pdf1 = new PdfDocument();

        // Load the first PDF file from the specified path
        pdf1.loadFromFile("ComparePdfDocument_1.pdf");

        // Create a new PdfDocument object 'pdf2' to work with the second PDF file
        PdfDocument pdf2 = new PdfDocument();

        // Load the second PDF file from the specified path
        pdf2.loadFromFile("ComparePdfDocument_2.pdf");

        // Create a PdfComparer object 'compare' with 'pdf1' and 'pdf2' as parameters for comparison
        PdfComparer compare = new PdfComparer(pdf1, pdf2);

        // Set the page ranges to be compared using the options of the comparer
        compare.getOptions().setPageRanges(0, pdf1.getPages().getCount() - 1, 0, pdf2.getPages().getCount() - 1);

        String result = "output.pdf";
        File outFile = new File(result);

        // Create an output stream to write the document to the output file
        OutputStream outputStream = new FileOutputStream(outFile);

        // Compare the PDF documents and save 
        compare.compare(outputStream);

        // Dispose of system resources associated with 'pdf1'
        pdf1.dispose();

        // Dispose of system resources associated with 'pdf2'
        pdf2.dispose();
Bug SPIREPDF-6373 Optimized performance when converting PDF documents to images.
Bug SPIREPDF-6406 Fixed an OutOfMemoryError that occurred during OFD to PDF conversion.
Bug SPIREPDF-7189 Improved the rendering quality of PDF to Word conversion results when opened in WPS.
Bug SPIREPDF-7305 Fixed inconsistent background colors and partial font rendering issues when printing PDFs.
Bug SPIREPDF-7407 Enhanced layout accuracy when converting PDFs to flowable Word documents.
Bug SPIREPDF-7560 Resolved an error related to PdfTrueTypeFont in multi-threaded environments.
Bug SPIREPDF-7666 Fixed incorrect content generation when using the "Yu Mincho" font.
Bug SPIREPDF-7687 Fixed text misalignment issues in PDF to PDF/A-1A conversion.
Bug SPIREPDF-7782 Fixed extra spaces appearing in extracted table content.
Bug SPIREPDF-7820 Resolved missing formulas when converting PDF documents to images.
Bug SPIREPDF-7869 Fixed overlapping text issues in PDF to HTML conversion.
Bug SPIREPDF-7887 Resolved the "structure is not valid" error when loading PDF documents.
Bug SPIREPDF-7890 Fixed an ArrayIndexOutOfBoundsException that occurred when saving PDFs after adding text watermarks.
Bug SPIREPDF-7898 Fixed content inconsistency issues during SVG to PDF conversion.
Bug SPIREPDF-7910 Resolved an error ("For input string: '36.8s'") during OFD to PDF conversion.
Bug SPIREPDF-7911 Fixed incorrect content issues in OFD to PDF conversion.
Click the link below to download Spire.PDF for Java 11.12.16:

We’re pleased to announce the release of Spire.Doc for Python 14.1.6. This version adds support for macOS on ARM architecture. In addition, several issues related to document property retrieval and font size settings on macOS have been fixed. More details are listed below.

Here is a list of changes made in this release

Category ID Description
New feature SPIREDOC-10777 Added support for macOS on ARM architecture.
Bug SPIREDOC-11594 Fixed an issue where retrieving document properties in a Python v3.14 environment caused a “NotImplementedError” exception.
Bug SPIREDOC-11602 Fixed an issue where setting CharacterFormat.FontSize on macOS caused a “RuntimeError: ffi_prep_cif_var failed” exception.
Click the link below to download Spire.Doc for Python 14.1.6:

We’re glad to announce the release of Spire.Presentation for Java 11.1.3. This version introduces support for parsing WEBP format images when converting PowerPoint files to other formats, along with the resolution of two known bugs. More details are as follows.

Here is a list of changes made in this release

Category ID Description
New feature SPIREPPT-2349 SPIREPPT-2950 Added support for parsing WEBP format images during conversions.
Bug SPIREPPT-3069 Fixed the issue where adding the "\dots" formula caused a "NullPointerException" error.
Bug SPIREPPT-3071 Fixed the issue with inconsistent content when converting PPT to PDF.
Click the link below to download Spire.Presentation for Java 11.1.3:

We're pleased to announce the release of Spire.XLS 16.1.4. This version adds several new features, such as support for converting a specified cell range to HTML and converting Excel files to PDF/UA-compliant documents. Besides, it also fixes an issue where OLE objects in the document could not be deleted successfully. More details are shown below.

Here is a list of changes made in this release

Category ID Description
New feature SPIREXLS-5948 Added support for the BYROW and BYCOL functions.
// Use BYROW to calculate the average of each row
sheet.Range["G2"].Formula = "=BYROW(B2:F2, LAMBDA(row, AVERAGE(row)))";
// Use BYCOL to calculate the average of each column
sheet.Range["B8"].Formula = "=BYCOL(B2:B7, LAMBDA(col, AVERAGE(col)))";
New feature SPIREXLS-5980 Added support for converting a specified cell range to HTML.
Workbook workbook = new Workbook();
workbook.LoadFromFile(inputFile);
Worksheet sheet = workbook.Worksheets[0];
CellRange cell = sheet.Range["A1:B3"];
string html = cell.HtmlString;
File.WriteAllText(outputFile, html);
New feature SPIREXLS-5983 Added support for transposing rows and columns when copying a cell range.
CopyRangeOptions options = CopyRangeOptions.Transpose | CopyRangeOptions.All;
sheet["A1:C4"].Copy(sheet["D2:G3"], options);
sheet["A1:B5"].Copy(sheet["D5"], options);
workbook.SaveToFile(outputFile);
New feature SPIREXLS-6018 Added support for converting Excel files to PDF/UA-compliant documents.
Workbook workbook = new Workbook();
workbook.LoadFromFile(inputFile);
workbook.ConverterSetting.PdfConformanceLevel = Spire.Xls.Pdf.PdfConformanceLevel.Pdf_UA1;
workbook.SaveToFile(outputFile, FileFormat.PDF);
workbook.Dispose();
Bug SPIREXLS-6044 Fixed an issue where OLE objects in the document could not be deleted successfully.
Click the link to download Spire.XLS 16.1.4:
More information of Spire.XLS new release or hotfix:

We're pleased to announce the release of Spire.PDF 12.1.6. This version supports getting and setting the PDF 2.0 version. Meanwhile, some issues that occurred when converting PDF to images or PDF/A, replacing text, loading XPS files and extracting text have also been successfully fixed. More details are listed below.

Here is a list of changes made in this release

Category ID Description
New feature SPIREPDF-5365 Supports getting and setting the PDF 2.0 version.
// Retrieve
PdfFileInfo info = doc.FileInfo;
PdfVersion version = info.Version;

// Settings
doc.FileInfo.Version = PdfVersion.Version2_0;
Bug SPIREPDF-6905 Fixes the issue where text color was rendered incorrectly when converting PDF to images.
Bug SPIREPDF-7866 Fixes the issue where memory was not properly released during text replacement.
Bug SPIREPDF-7875 Fixes the issue where QR codes were missing after converting PDF to PDF/A or images.
Bug SPIREPDF-7884 Fixes the issue where an ArgumentOutOfRangeException was thrown when loading XPS files.
Bug SPIREPDF-7892 Fixes the issue where text extraction failed under certain conditions.
Click the link below to download Spire.PDF 12.1.6:

We’re pleased to announce the release of Spire.Doc for .NET 14.1.12. This update introduces several valuable new features, including the ability to delete specified or blank pages in Word documents, create and manipulate VBA macros, and retrieve complete revision information from documents. In addition, multiple known issues have been resolved to improve overall stability and performance. More details are listed below.

Here is a list of changes made in this release

Category ID Description
New feature SPIREDOC-3929 Added support for configuring formula conversion to MathML when converting Word to HTML.
HtmlExportOptions options = doc.HtmlExportOptions;
options.OfficeMathOutputMode = HtmlOfficeMathOutputMode.MathML;
New feature SPIREDOC-9868 Added support for deleting specified pages and blank pages.
doc.RemoveBlankPages(); // Delete blank pages
doc.RemovePages(new List {0,1,3}); // Delete specified pages
New feature SPIREDOC-11489 Added support for creating and manipulating VBA macros.
Document doc = new Document();
doc.AddSection().AddParagraph().AppendText("wertyuiop[]fghjk");

// Add VBA project to document
VbaProject vbaProject = new VbaProject();
vbaProject.Name = "SampleVBAMacro";
doc.VbaProject = vbaProject;

// Add modules to VBA project
// Module 1
VbaModule vbaModule1 = doc.VbaProject.Modules.Add("SampleModule1", VbaModuleType.StdModule);
vbaModule1.SourceCode = @"
Sub DocumnetInfo()
    MsgBox ""create time: "" &Now()
    MsgBox ""Pages:"" & ActiveDocument.Range.ComputeStatistics(wdStatisticPages)
End Sub

Sub WriteHello()
    Selection.TypeText Text:=""Hello World!""
End Sub";

// Module 2
VbaModule vbaModule2 = doc.VbaProject.Modules.Add("SampleModule2", VbaModuleType.StdModule);
vbaModule2.SourceCode = @"
Sub InsertCurrentDate()
    Selection.TypeText Text:=Format(Now(),""yyyy-mm-dd hh:mm:ss"")
End Sub

Sub IndentParagraph()
    Selection.ParagraphFormat.LeftIndent = InchesToPoints(0.5)
End Sub";

doc.SaveToFile("result.docm", FileFormat.Docm);
doc.Close();
New feature SPIREDOC-11598 Added GetRevisionInfos() method to retrieve full revision information from the document.
Document doc = new Document();
doc.LoadFromFile("input.docx");
StringBuilder sb = new StringBuilder();
RevisionInfoCollection revisionInfoCollection = doc.GetRevisionInfos();

foreach (RevisionInfo revisionInfo in revisionInfoCollection)
{
    sb.AppendLine("[author]:" + revisionInfo.Author + "\r\n" + "  [RevisionType]:" + revisionInfo.RevisionType + "\r\n" + "  [DateTime]:" + revisionInfo.DateTime.ToString() + "\r\n" + "  [OwnerObject]:" + revisionInfo.OwnerObject + "\r\n" + "  [OwnerObject.Owner]:" + revisionInfo.OwnerObject.Owner + "\r\n");
    if (revisionInfo.OwnerObject is TextRange textRange)
    {
        TextRange range = (TextRange)textRange;
        sb.AppendLine($"TextRange - Content:{range.Text}");
    }
}
File.WriteAllText(outputFile, sb.ToString());
doc.Dispose();
Bug SPIREDOC-11523 Fixed the issue where the program hangs when converting Word to PDF.
Bug SPIREDOC-11632 Fixed the issue where line breaks are incorrect when adding multi-line watermarks.
Bug SPIREDOC-11692 Fixed the issue where table of contents fields fail to update.
Bug SPIREDOC-11703 Fixed the issue where the result is incorrect when converting Markdown to Word.
Bug SPIREDOC-11706 Fixed the issue where document saving takes a long time when adding multi-line text with "\r\n".
Bug SPIREDOC-11727 Fixed the issue where extra blank paragraphs appear when adding HTML to Word.
Bug SPIREDOC-11744 Fixed the issue where images are blurry when converting Word to HTML.
Bug SPIREDOC-11767 Fixed the issue where content is inconsistent when loading and saving RTF files.
Click the link below to download Spire.Doc 14.1.12:
More information of Spire.Doc new release or hotfix:

We're pleased to announce the release of Spire.PDF for Python 12.1.3. This version supports customizing signature appearance and retrieving font style information of extracted text. Additionally, several issues that arose during the processing of PDF files have also been resolved. More details are listed below.

Here is a list of changes made in this release

Category ID Description
New feature SPIREPDF-7558 Completed compatibility support for Mac M-series chips (ARM64 architecture)
New feature SPIREPDF-7000 SPIREPDF-7698 Added support for customizing signature appearance via the PdfCustomAppearance class.
class MyPdfCustomAppearance(IPdfSignatureAppearance):
    def __init__(self):
        pass

    def Generate(self, g: PdfCanvas):
        x = 0.0
        y = 0.0
        fontSize = 10.0
        font = PdfTrueTypeFont("SimSun", fontSize, PdfFontStyle.Regular, True)
        lineHeight = fontSize
        image = PdfImage.FromFile(inputImage)
        g.DrawImage(image, x, y)
        x = float(image.Width)
        g.DrawString("Signer: Gary", font, PdfBrushes.get_Red(), PointF(x, y))
        y += lineHeight + 5
        g.DrawString("Phone: +86 12345678", font, PdfBrushes.get_Black(), PointF(x, y))
        y += lineHeight + 5
        g.DrawString("Address: Sichuan Province, China", font, PdfBrushes.get_Black(), PointF(x, y))

doc = PdfDocument()
doc.LoadFromFile(inputFile)
signatureMaker = PdfOrdinarySignatureMaker(doc, inputFile_pfx, "e-iceblue")
my_appearance = MyPdfCustomAppearance()
customAppearance = PdfCustomAppearance(my_appearance)
signatureMaker.MakeSignature("Signer", doc.Pages.get_Item(0), 90.0, 550.0, 270.0, 640.0, customAppearance)
doc.SaveToFile(outputFile)
New feature SPIREPDF-7053 Added support for retrieving font style information of extracted text.
# Load document from disk
doc = PdfDocument()
doc. LoadFromFile(inputFile)
# Define a rectangle
rctg = RectangleF (0.0, 0.0, 200.0, 300.0)
pdfPageBase = doc.Pages.get_Item (0)
finder = PdfTextFinder(pdfPageBase)
finder.Options.Parameter = TextFindParameter.none
finder.Options.Area = rctg
# Find text in the rectangle
findouts = finder.FindAllText()
sb=[]
for fragment in findouts:
    sb.append (fragment.Text)
    sb.append (fragment.TextStates[0].FontName)
    sb.append(str(round(fragment.TextStates[0].FontSize,2)))
result ="result.txt"
Bug SPIREPDF-6659 Fixed an issue where text replacement produced incorrect results.
Bug SPIREPDF-7483 Fixed an issue that the “ffi_prep_cif_var failed” error occurred when running certain Python features on macOS.
Bug SPIREPDF-7819 SPIREPDF-7821 SPIREPDF-7822 Fixed an issue where content copied from a PDF/A-2B compliant document (converted from PDF) was incorrect.
Bug SPIREPDF-7864 Fixed an issue where setting a color during text replacement did not take effect as expected.
Click the link to download Spire.PDF for Python 12.1.3:

We're pleased to announce the release of Spire.Doc for Java 14.1.3. This version supports applying custom styles to tables, removing styles via the removeSelf() method, and cloning styles from template documents. Meanwhile, some issues that occurred when converting Word to PDF or Markdown, and updating TOC or page number fields have also been successfully fixed. More details are listed below.

Here is a list of changes made in this release

Category ID Description
New feature SPIREDOC-11582 Added the removeSelf() method to support removing a style.
document.getStyles().get("style1").removeSelf();
New feature SPIREDOC-11583 Supports applying custom styles to tables.
Document doc = new Document();
Section section = doc.addSection();
TableStyle tableStyle = (TableStyle) doc.getStyles().add(StyleType.Table_Style, "TestTableStyle1");
tableStyle.setHorizontalAlignment(RowAlignment.Center);
tableStyle.getBorders().setColor(Color.BLUE);
tableStyle.getBorders().setBorderType(BorderStyle.Single);
Table table = section.addTable();
table.resetCells(1, 1);
table.getRows().get(0).getCells().get(0).addParagraph().appendText("Aligned to the center of the page");
table.setPreferredWidth(PreferredWidth.fromPoints(300));
table.applyStyle(tableStyle);
// table.getFormat().setStyle(tableStyle);
doc.saveToFile(outputDocxFile, FileFormat.Docx);
New feature SPIREDOC-11748 Supports cloning styles from a template document.
doc.copyStylesFromTemplate(inputFile_2);  // Accepts file path as String
doc.copyStylesFromTemplate(doc2);         // Accepts another Document object
Bug SPIREDOC-10278 Fixes the issue where paragraph indentation was incorrect when converting Word to PDF.
Bug SPIREDOC-11142 Fixes the issue where image layout inside tables was rendered incorrectly during Word-to-PDF conversion.
Bug SPIREDOC-11688 Fixes the issue where Word-to-PDF conversion did not correctly apply formatting rules specific to WPS Office.
Bug SPIREDOC-11714 Fixes a NullPointerException that occurred when converting Word to Markdown.
Bug SPIREDOC-11718 Fixes a NullPointerException that occurred during Word-to-PDF conversion.
Bug SPIREDOC-11734 Fixes the issue where the application would hang when updating TOC (Table of Contents) fields.
Bug SPIREDOC-11735 Fixes the issue where page number fields failed to update correctly.
Bug SPIREDOC-11757 Fixes an IllegalStateException ("Unexpected ST_TrueFalse value") during Word-to-PDF conversion.
Click the link below to download Spire.Doc for Java 14.1.3:
Page 6 of 18