Spire.Barcode for Java 5.2.0 fixes two issues that occurred while scanning an image
We are happy to announce the release of Spire.Barcode for Java 5.2.0. In this version, two issues that occurred while scanning an image have been successfully fixed. Details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| Bug | SPIREBARCODE-273 | Fixed the issue where the application threw a "java.lang.OutOfMemoryError" when scanning an image. |
| Bug | SPIREBARCODE-276 | Fixed the issue of incorrect result data when scanning an image. |
Spire.Office 10.9.0 is released
We are excited to announce the release of Spire.Office 10.9.0. In this version, Spire.Doc exposes core interfaces for fine-grained document styling control; Spire.XLS supports creating and modifying Equations; Spire.Presentation fixes an issue where documents failed to open; Spire.PDF improves OFD to PDF conversion; Spire.DocViewer adjusts its security-related dependencies; Spire.PDFViewer adds a platform-agnostic .NET 7.0 version; Spire.Barcode fixes a font issue. Besides, a lot of known issues are fixed successfully in this version. More details are listed below.
In this version, the most recent versions of Spire.Doc, Spire.PDF, Spire.XLS, Spire.Presentation, Spire.Barcode, Spire.DocViewer, and Spire.PDFViewer are included.
DLL Versions:
- Spire.Doc.dll v13.9.10
- Spire.PDF.dll v11.9.17
- Spire.XLS.dll v15.9.7
- Spire.Presentation.dll v10.9.3
- Spire.Barcode.dll v7.4.1
- Spire.Email.dll v6.6.3
- Spire.DocViewer.Forms.dll v8.9.4
- Spire.PDFViewer.Asp.dll v8.2.1
- Spire.PDFViewer.Forms.dll v8.2.1
- Spire.Spreadsheet.dll v7.5.2
- Spire.OfficeViewer.Forms.dll v8.8.0
- Spire.DataExport.dll 4.9.0
- Spire.DataExport.ResourceMgr.dll v2.1.0
Here is a list of changes made in this release
Spire.Doc
| Category | ID | Description |
| New feature | - | Exposes core style interfaces ICharacterStyle, IListStyle, and ITableStyle to enable fine-grained document styling control. |
| New feature | SPIREDOC-7186 SPIREDOC-7365 | Removes CharacterFormat from IStyle, now implemented in CharacterStyle, ParagraphStyle, and TableStyle.
IStyle style = document.Styles.FindByName("Normal");
if (style != null && style is ICharacterStyle)
{
ICharacterStyle cStyle = style as ICharacterStyle;
cStyle.CharacterFormat.FontName = "cambria";
cStyle.CharacterFormat.FontSize = 14;
cStyle.CharacterFormat.Bold = true;
cStyle.CharacterFormat.TextColor = Color.FromArgb(42, 123, 136);
}
|
| New feature | SPIREDOC-2945 SPIREDOC-4871 | Adds the IStyle.RemoveSelf() method to remove a style from the document.
string pStyleName = "testStyle";
Document document = new Document();
ParagraphStyle pStyle = (ParagraphStyle)document.Styles.Add(StyleType.ParagraphStyle, pStyleName);
pStyle.CharacterFormat.FontName = "Calibri";
pStyle.CharacterFormat.FontSize = 16;
pStyle.CharacterFormat.Bold = true;
pStyle.CharacterFormat.TextColor = Color.DarkRed;
Section section = document.AddSection();
Paragraph para = section.AddParagraph();
para.ApplyStyle(pStyle);
para.AppendText("Hello world!");
Style firstParaStyle = document.FirstSection.Body.FirstParagraph.Format.Style;
document.SaveToFile(outputDocxFile1, FileFormat.Docx);
document.Styles[pStyleName].RemoveSelf();
document.SaveToFile(outputDocxFile2, FileFormat.Docx);
|
| New feature | - | Enables conditional table formatting via TableConditionalStyle, TableConditionalStyleCollection, and TableConditionalStyleType to style odd/even rows and columns.
Document doc = new Document();
Section section = doc.AddSection();
Table table = section.AddTable();
table.ResetCells(15, 4);
for (int i = 0; i < 15; i++)
{
TableRow row = table.Rows[i];
for (int j = 0; j < 4; j++)
{
TableCell cell = row.Cells[j];
cell.AddParagraph().AppendText(string.Format("{0} column.", (j % 2 == 0 ? "Even" : "Odd")));
cell.AddParagraph().AppendText(string.Format("Row banding {0}", (i % 3 == 0 ? "start" : "continuation")));
}
}
TableStyle tableStyle = (TableStyle)doc.Styles.Add(StyleType.TableStyle, "TestTableStyle1");
tableStyle.Borders.Color = Color.Black;
tableStyle.Borders.BorderType = BorderStyle.Double;
tableStyle.RowStripe = 3;
tableStyle.ConditionalStyles[TableConditionalStyleType.OddRowStripe].Shading.BackgroundPatternColor = Color.LightBlue;
tableStyle.ConditionalStyles[TableConditionalStyleType.EvenRowStripe].Shading.BackgroundPatternColor = Color.LightCyan;
tableStyle.ColumnStripe = 1;
tableStyle.ConditionalStyles[TableConditionalStyleType.EvenColumnStripe].Shading.BackgroundPatternColor = Color.LightPink;
table.ApplyStyle(tableStyle);
table.Format.StyleOptions = table.Format.StyleOptions | TableStyleOptions.ColumnStripe;
doc.SaveToFile(outputDocxFile1, FileFormat.Docx);
|
| New feature | - | Obsoletes the Table.TableStyleName and replaces it with Table.Format.StyleName. Adds Table.Format.Style and Table.ApplyStyle(ITableStyle) for applying styles to tables. |
| New feature | SPIREDOC-3647 | Exposes Style, StyleOptions, and StyleName properties in TableFormat, with TableStyleOptions enum support.
Document doc = new Document();
Section section = doc.AddSection();
TableStyle tableStyle = (TableStyle)doc.Styles.Add(StyleType.TableStyle, "TestTableStyle1");
tableStyle.HorizontalAlignment = RowAlignment.Center;
tableStyle.Borders.Color = Color.Blue;
tableStyle.Borders.BorderType = BorderStyle.Single;
Table table = section.AddTable();
table.ResetCells(1, 1);
table.Rows[0].Cells[0].AddParagraph().AppendText("Aligned to the center of the page");
table.PreferredWidth = PreferredWidth.FromPoints(300);
table.ApplyStyle(tableStyle);
section.AddParagraph().AppendText(" ");
tableStyle = (TableStyle)doc.Styles.Add(StyleType.TableStyle, "TestTableStyle2");
tableStyle.LeftIndent = 55;
tableStyle.Borders.Color = Color.Green;
tableStyle.Borders.BorderType = BorderStyle.Single;
table = section.AddTable();
table.ResetCells(1, 1);
table.Rows[0].Cells[0].AddParagraph().AppendText("Aligned according to left indent");
table.PreferredWidth = PreferredWidth.FromPoints(300);
table.Format.Style = tableStyle;
doc.SaveToFile(outputDocxFile1, FileFormat.Docx);
|
| New feature | - | Adds Document.AddStyle(DefaultTableStyle) method to apply built-in table styles.
Document doc = new Document();
Section section = doc.AddSection();
Table table = section.AddTable();
table.ResetCells(15, 4);
for (int i = 0; i < 15; i++)
{
TableRow row = table.Rows[i];
for (int j = 0; j < 4; j++)
{
TableCell cell = row.Cells[j];
cell.AddParagraph().AppendText(string.Format("{0} column.", (j % 2 == 0 ? "Even" : "Odd")));
cell.AddParagraph().AppendText(string.Format("Row banding {0}", (i % 2 == 0 ? "Even" : "Odd")));
}
}
TableStyle tableStyle = doc.AddStyle(DefaultTableStyle.LightListAccent3);
table.ApplyStyle(tableStyle);
doc.SaveToFile(outputDocxFile1, FileFormat.Docx);
|
| New feature | - | Adds public classes PdfDigitalSignatureHashAlgorithm, PdfDigitalSignatureInfo, and PdfDigitalSignatureTimestampConfiguration to enable adding digital signatures and timestamps when saving PDF documents.
Document sDoc = new Document();
sDoc.LoadFromFile(inputFile);
ToPdfParameterList toPdfParameter = new ToPdfParameterList();
toPdfParameter.DigitalSignatureInfo = new PdfDigitalSignatureInfo(pfxInputFile, pfxPassword, "Test signing", "Spire Doc");
toPdfParameter.DigitalSignatureInfo.HashAlgorithm = PdfDigitalSignatureHashAlgorithm.RipeMD160;
toPdfParameter.DigitalSignatureInfo.SignatureDate = nowDateTime;
toPdfParameter.DigitalSignatureInfo.TimestampConfiguration = new PdfDigitalSignatureTimestampConfiguration("https://freetsa.org/tsr", "bill", "Password");
sDoc.SaveToFile(outputFile3, toPdfParameter);
|
| New feature | SPIREDOC-11376 | The Bookmark object now exposes FirstColumn and LastColumn properties, supporting retrieval of the column where a bookmark starts and where it ends.
int firstColumn = doc.Bookmarks["t_insert"].FirstColumn; int lastColumn = doc.Bookmarks["t_insert"].LastColumn; |
| New feature | SPIREDOC-11445 | Adds the SearchOptions class, supporting the option to ignore or include OfficeMath formula text during text replacement.
SearchOptions op = new SearchOptions();
op.IgnoreOfficeMath = false;
doc.Replace("ab","new", op);
|
| New feature | SPIREDOC-11452 | Adds the PageLayout property to support setting page layout when converting to PDF. The enumeration types are as follows: Default: Does not write a value; displayed according to the PDF reader's default view. SinglePage: Single page view. OneColumn: Continuous single-page view. TwoColumnLeft: Continuous two-page view, odd-numbered pages on the left. TwoColumnRight: Continuous two-page view, odd-numbered pages on the right. TwoPageLeft: Two-page view, odd-numbered pages on the left. TwoPageRight: Two-page view, odd-numbered pages on the right.
Document doc = new Document("xx.docx");
ToPdfParameterList toPdf = new ToPdfParameterList(){ PageLayout = PdfPageLayout.TwoColumnLeft };
doc.SaveToFile("xx.pdf", toPdf);
|
| Bug | SPIREDOC-10022 | Fixes incorrect parsing of LaTeX formulas. |
| Bug | SPIREDOC-10885 | Fixes inconsistent table styles when converting Word to PDF. |
| Bug | SPIREDOC-10992 | Fixes header images being obscured when converting Word to PDF. |
| Bug | SPIREDOC-11018 | Fixes incorrect text positioning when converting Word to PDF. |
| Bug | SPIREDOC-11041 | Fixes incorrect paragraph indentation when converting Word to PDF. |
| Bug | SPIREDOC-11129 | Fixes table content shifting when converting Word to PDF. |
| Bug | SPIREDOC-11184 SPIREDOC-11391 | Fixes inconsistent table styles when converting Word to PDF. |
| Bug | SPIREDOC-11384 | Fixes extra blank pages appearing when converting Word to PDF. |
| Bug | SPIREDOC-11423 | Fixes System.NullReferenceException thrown when converting Word to PDF. |
| Bug | SPIREDOC-11438 | Fixes ArgumentOutOfRangeException thrown when loading a Word document. |
| Bug | SPIREDOC-11512 | Fixes incorrect page count retrieval. |
Spre.XLS
| Category | ID | Description |
| Optimization | SPIREXLS-5888 | Optimizes the time consumption for converting Excel to PDF. |
| Optimization | SPIREXLS-5929 | Optimizes the time consumption for converting Excel to HTML. |
| New feature | SPIREXLS-4316 | Adds IXlsEquation Interface to support creating and modifying Equations.
Workbook workbook = new Workbook();
workbook.LoadFromFile("Equation_1.xlsx");
Worksheet sheet = workbook.Worksheets[0];
// Add a new equation at position (1, 1) with size 50x50, displaying fraction A/B
sheet.Equations.AddEquation(1, 1, 50, 50, "\\frac{A}{B}");
// Get the first equation in the worksheet
IXlsEquation equation = sheet.Equations[0];
// Update the equation content using LaTeX syntax
equation.UpdateByLatexText("\\text{tan}\\frac{\\alpha}{2}=\\frac{\\text{sin}\\alpha}{1+ \\text{cos}\\alpha}");
// Set the position and size of the equation
equation.Top = 19;
equation.Left = 72;
equation.Width = 100;
equation.Height = 100;
// Get the second equation in the worksheet
IXlsEquation equation1 = sheet.Equations[1];
// Get the collection of equation items (components of the formula)
IEquationItemCollection equationItems = equation1.EquationItems;
// Get the first item in the collection
IEquationItem item1 = equationItems[0];
item1.Text = "e-iceblue"; // Modify the text of the item
// Append a new LaTeX formula at the end
equationItems.AddByLatex("\\frac{n!}{r!(n-r)!} ");
// Insert a LaTeX formula at index 0
equationItems.InsertByLatex(0, "\\Delta A B C");
// Save the workbook
workbook.SaveToFile("out.xlsx");
|
| New feature | SPIREXLS-5934 | Supports preserving frozen rows when converting Excel to HTML.
HTMLOptions.Default.IsSaveFreezedPanes = true; // true to preserve freeze panes, false to discard |
| New feature | SPIREXLS-5935 | Supports the ISOMITTED function.
sheet.Range["D7"].Formula = "=LAMBDA(val,max,IF(ISOMITTED(max),val,IF(AND(val>0,val<max),\"within range\",\"out of range\")))(A1,A2)"; |
| New feature | SPIREXLS-5941 | Supports the LAMBDA function.
sheet.Range["D5"].Formula = "=LAMBDA(a,b,IF(ISOMITTED(b),a*a,a*b))(A1,A2)"; |
| Bug | SPIREXLS-5856 | Fixes the issue where row height was retrieved incorrectly. |
| Bug | SPIREXLS-5904 | Fixes the issue where text boxes were missing when converting Excel to PDF. |
| Bug | SPIREXLS-5907 | Fixes the issue where text alignment in text boxes was incorrect when converting Excel to PDF. |
| Bug | SPIREXLS-5910 | Fixes the issue where data was incorrect when converting Excel to PDF. |
| Bug | SPIREXLS-5915 | Fixes the issue where content was incorrect when converting Excel to PDF. |
| Bug | SPIREXLS-5926 | Fixes the issue where rendering was incorrect when converting Excel to PDF. |
| Bug | SPIREXLS-5932 | Fixes the issue where borders were incorrect when converting Excel to PDF. |
| Bug | SPIREXLS-5940 | Fixes the issue that copying a worksheet containing a Slicer to another workbook threw a "System.ArgumentOutOfRangeException" exception. |
| Bug | SPIREXLS-5947 | Enhances compatibility handling for NamedRanges that contain error values. |
| Bug | SPIREXLS-5953 | Fixes the issue where chart formatting was incorrect when converting Excel to images. |
Spire.Presentation
| Category | ID | Description |
| Bug | SPIREPPT-3008 | Fixed an issue where documents failed to open when using netstandard libraries on .NET 9.0. |
| Bug | SPIREPPT-2976 | Fixes the issue of accidentally creating a new slide when inserting an SVG into a specified shape in a multi-page PowerPoint presentation. |
Spire.PDF
| Category | ID | Description |
| New feature | SPIREPDF-7617 | Adds the SaveAsImage(int pageIndex, int dpiX, int dpiY) method in the NETStandard DLL to support customizing image DPI when converting PDF to images. |
| New feature | SPIREPDF-7694 | Adds the Collate property in the NETStandard DLL to support setting the print order for multiple copies.
// true: Collated printing; default false: Uncollated printing doc.PrintSettings.Collate = true; |
| Bug | SPIREPDF-1134 | Fixes the issue where the text order was incorrect when rendering mixed Hebrew and English strings. |
| Bug | SPIREPDF-2641 SPIREPDF-4108 | Fixes the issue where Arabic text displayed incorrectly in TextBox form fields. |
| Bug | SPIREPDF-5073 | Fixes the issue where extra characters appeared when extracted text was redrawn. |
| Bug | SPIREPDF-7219 SPIREPDF-7261 | Fixes the issue where Arabic text was rendered incorrectly. |
| Bug | SPIREPDF-7647 | Fixes the issue where lines became thicker after converting OFD to PDF. |
| Bug | SPIREPDF-7685 | Fixes the issue where the application threw an exception when extracting text from pages. |
| Bug | SPIREPDF-7718 | Fixes the issue where printing PDF documents failed when calling the .NET Standard DLL. |
| Bug | SPIREPDF-6584 | Fixed an issue where memory consumption was high when using the NETStandard DLL to convert PDF to images. |
| Bug | SPIREPDF-7072 | Fixed an issue where the retrieved font name was inaccurate when searching for text. |
| Bug | SPIREPDF-7371 | Fixed an issue where the conversion result from OFD to PDF was incorrect. |
| Bug | SPIREPDF-7373 | Fixed an issue where annotations were not displayed when converting PDF to XPS. |
| Bug | SPIREPDF-7658 | Fixed an issue where the application threw an "Unexpected token before 158586" exception when loading a PDF document. |
| Bug | SPIREPDF-7669 | Fixed an issue where the application threw an "ArgumentOutOfRangeException" when extracting text. |
| Bug | SPIREPDF-7684 | Fixed an issue where the application threw an "Unknown annotation type value: 'Free Text'" exception when converting OFD to PDF. |
| Bug | SPIREPDF-7706 | Fixed an issue where some fonts could not be embedded correctly after drawing text. |
Spire.DocViewer
| Adjustment | - | Removed the "System.Security.Cryptography.Pkcs", "System.Security.Permissions", and "System.Security.Cryptography.Xml" dependencies. |
| Adjustment | - | Introduced a platform-agnostic .NET 7.0 version that supports running on all operating systems. |
| Adjustment | - | Introduced platform-specific versions for .NET 7.0-Android33.0 and .NET 7.0-Windows10.0.19041, which are deeply optimized for their respective platforms. |
Spire.PDFViewer
| New feature | - | Added a platform-agnostic .NET 7.0 version that runs across all operating systems. |
| Adjustment | - | Enhanced the platform-specific version for .NET 7.0-Windows 10.0.19041. |
Spire.Barcode
| Adjustment | - | Removed the“System.Security.Cryptography.Pkcs”, “System.Security.Permissions”, and “System.Security.Cryptography.Xml” dependencies on .NET Core and .NET Standard platforms. |
| Bug | SPIREBARCODE-285 | Fixed the issue where specific fonts could not be recognized when creating barcodes. |
Spire.PDFViewer 8.2.1 adds a platform-agnostic .NET 7.0 version
We’re pleased to announce the release of Spire.PDFViewer 8.2.1. This update introduces a cross-platform .NET 7.0 version, along with the dedicated version for Windows, ensuring broad compatibility and seamless integration across environments. More details are as follows.
Here is a list of changes made in this release
| Category | ID | Description |
| New feature | - | Added a platform-agnostic .NET 7.0 version that runs across all operating systems. |
| Adjustment | - | Enhanced the platform-specific version for .NET 7.0-Windows 10.0.19041. |
Spire.PDF 11.9.17 improves OFD to PDF conversion
We’re pleased to announce the release of Spire.PDF 11.9.17. This version includes several important bug fixes, addressing text rendering issues with Hebrew and Arabic scripts, problems with text extraction, OFD-to-PDF conversion, and PDF printing using the .NET Standard DLL. See the full details below.
Here is a list of changes made in this release
| Category | ID | Description |
| Bug | SPIREPDF-1134 | Fixes the issue where the text order was incorrect when rendering mixed Hebrew and English strings. |
| Bug | SPIREPDF-2641 SPIREPDF-4108 | Fixes the issue where Arabic text displayed incorrectly in TextBox form fields. |
| Bug | SPIREPDF-5073 | Fixes the issue where extra characters appeared when extracted text was redrawn. |
| Bug | SPIREPDF-7219 SPIREPDF-7261 | Fixes the issue where Arabic text was rendered incorrectly. |
| Bug | SPIREPDF-7647 | Fixes the issue where lines became thicker after converting OFD to PDF. |
| Bug | SPIREPDF-7685 | Fixes the issue where the application threw an exception when extracting text from pages. |
| Bug | SPIREPDF-7718 | Fixes the issue where printing PDF documents failed when calling the .NET Standard DLL. |
Spire.Presentation 10.9.3 fixes an issue where documents failed to open
We're glad to announce the release of Spire.Presentation 10.9.3. This version fixes an issue where documents failed to open. Check below for the details.
Here is a list of changes made in this release
| Category | ID | Description |
| Bug | SPIREPPT-3008 | Fixed an issue where documents failed to open when using netstandard libraries on .NET 9.0. |
E-iceblue will be on Mid-Autumn Festival and National Day Holiday from October 1 to 8, 2025
We would like to inform you that E-iceblue will be on holiday from October 1st to October 8th, 2025 (GMT+8:00), in observance of China’s National Day and Mid-Autumn Festival.
During the holiday, your email will be received as usual, and the urgent problems will be solved as soon as possible by the staff on duty.
Note: The purchase system will remain available 24 hours a day and 7 days a week. Once you process the order online and finish the payment, the license file will be sent to you automatically by our system.
If you want to obtain a temporary license file to have a better evaluation on our products, please Request a Temporary Licensefor yourself. If you could not request it successfully, please send an email to the sales team.
Regular business hours will resume on October 9th, 2025. We apologize for any inconvenience this may cause and sincerely appreciate your understanding and continued support.
Please feel free to contact us via the following emails:
- Support Team: support@e-iceblue.com
- Sales Team: sales@e-iceblue.com
Useful Links Related to Purchase
Spire.Office for Java 10.9.0 Released
We are excited to announce the release of Spire.Office for Java 10.9.0. In this version, Spire.Doc for Java introduces several new features to enhance Word-to-Markdown conversion; Spire.Presentation for Java adds a new method to quickly retrieve the number of slides; Spire.PDF for Java optimizes memory consumption when loading documents. This release also includes numerous bug fixes. Details are provided below.
Here is a list of changes made in this release
Spire.Doc for Java
| Category | ID | Description |
| New feature | SPIREDOC-11484 | Supports configuring images to be embedded in Base64 encoding when converting Word to Markdown.
doc.getMarkdownExportOptions().setImagesAsBase64(true); |
| New feature | — | Supports configuring the output directory and resource reference path for images when converting Word to Markdown.
doc.getMarkdownExportOptions().setImagesFolder(ImagesFolder); doc.getMarkdownExportOptions().setImagesFolderAlias(file_imageFile.getCanonicalPath()); |
| New feature | — | Supports configuring the link output mode (Auto/Inline/Reference) when converting Word to Markdown.
doc.getMarkdownExportOptions().setLinkOutputMode(MarkdownLinkOutputMode.Inline); |
| New feature | — | Supports configuring lists to be exported using Markdown syntax or plain text when converting Word to Markdown.
doc.getMarkdownExportOptions().setListOutputMode(MarkdownListOutputMode.PlainText); |
| New feature | — | Supports configuring equations to be exported as text, image, or MathML when converting Word to Markdown.
doc.getMarkdownExportOptions().setOfficeMathOutputMode(MarkdownOfficeMathOutputMode.Image); |
| New feature | — | Supports retaining specified content (e.g., tables) in HTML format when converting Word to Markdown.
doc.getMarkdownExportOptions().setSaveAsHtml(MarkdownSaveAsHtml.Tables); |
| New feature | — | Supports using "++" symbols to represent underline formatting when converting Word to Markdown.
doc.getMarkdownExportOptions().setSaveUnderlineFormatting(true); |
| New feature | — | Supports configuring text alignment (Left/Center/Right/Auto) for tables when converting Word to Markdown.
doc.getMarkdownExportOptions().setTableTextAlignment(TableTextAlignment.Center); |
| Bug | SPIREDOC-10545 SPIREDOC-11365 SPIREDOC-11366 | Fixed an issue where Word document revision comparison was inaccurate. |
| Bug | SPIREDOC-11262 | Fixed an issue where page retrieval was incorrect. |
| Bug | SPIREDOC-11270 | Fixed an exception "Shape width cannot be greater than 1584 points" when converting Markdown to Word. |
| Bug | SPIREDOC-11319 | Fixed an exception "Error loading file: Unsupported file format" when converting HTML to Word. |
| Bug | SPIREDOC-11371 | Fixed incorrect page breaking when converting Word to PDF. |
| Bug | SPIREDOC-11435 | Fixed incorrect indentation in table of contents when saving Word documents. |
| Bug | SPIREDOC-11479 | Fixed an issue where the output stream was blank when saving Word to Markdown. |
| Bug | SPIREDOC-11480 | Fixed incorrect behavior when accepting revisions. |
| Bug | SPIREDOC-11486 | Fixed an issue where clearing table row background color had no effect. |
| Bug | SPIREDOC-11487 | Fixed a "NullPointerException" when calling the removeSelfOnly method to remove content controls. |
| Bug | SPIREDOC-11500 | Fixed an issue where the application hung when replacing bookmark content after enabling revisions. |
| Bug | SPIREDOC-11501 | Fixed an issue where the "incorrect password" exception was not properly thrown when loading encrypted documents. |
| Bug | SPIREDOC-11505 | Fixed a "NullPointerException" when retrieving the PackageFileName of an OLE object. |
| Bug | SPIREDOC-11506 | Fixed incorrect text retrieval. |
| Bug | SPIREDOC-11517 | Fixed an "Unsupported file format" exception when loading HTML files. |
| Bug | SPIREDOC-11548 | Fixed incorrect comment timestamps after saving Word documents. |
Spire.Presentation for Java
| Category | ID | Description |
| New feature | SPIREPPT-2978 | Adds the getSlidesCount() method to quickly retrieve the number of slides without fully parsing the entire document.
// Stream approach: InputStream stream = new FileInputStream(inputFile); int count = Presentation.getSlidesCount(stream); // File path approach: int count = Presentation.getSlidesCount(inputFile); |
| Bug | SPIREPPT-2908 SPIREPPT-2913 | Fixed an issue where the font rendering was incorrect when converting PPTX to PDF on Linux systems. |
| Bug | SPIREPPT-2916 | Fixed an issue where layout discrepancies occurred when converting slides to images. |
| Bug | SPIREPPT-2917 | Fixed an issue where table content overflowed its cells when converting slides to images. |
| Bug | SPIREPPT-2918 SPIREPPT-2924 | Fixed an issue where table borders were missing when converting slides to images. |
| Bug | SPIREPPT-2927 SPIREPPT-2966 | Fixed an issue where the rendering of LaTeX formulas was incorrect. |
Spire.PDF for Java
| Category | ID | Description |
| Optimization | SPIREPDF-7717 | Optimizes memory consumption when loading documents. |
| Bug | SPIREPDF-7608 | Fixes the issue where the program threw a "NullPointerException" when converting PDF to HTML. |
| Bug | SPIREPDF-7635 | Fixes the issue where the character "-" was missing when extracting text from PDF. |
| Bug | SPIREPDF-7639 | Fixes the issue where text wrap settings in Grid cells were not taking effect. |
| Bug | SPIREPDF-7652 | Fixes the issue where the obtained image coordinates were inaccurate. |
Spire.XLS for Java
| Category | ID | Description |
| Bug | SPIREXLS-5927 | Fixed an issue causing extra content and missing blank lines when converting Excel to HTML. |
| Bug | SPIREXLS-5942 | Fixed an issue where an "IllegalStateException" exception was thrown when saving an XLSB file. |
| Bug | SPIREXLS-5944 | Fixed an issue causing pagination differences when converting Excel to PDF. |
| Bug | SPIREXLS-5946 | Fixed an issue where ChartPlotEmptyType changed from Interpolated to Gap when cloning a worksheet. |
Spire.DocViewer 8.9.4 adjusts its security-related dependencies
We’re pleased to announce the release of Spire.DocViewer 8.9.4. This version removes three security-related dependencies, and introduces both a cross-platform .NET 7.0 version and platform-specific versions for Android and Windows, ensuring broad compatibility and deep system integration. More details are as follows.
Here is a list of changes made in this release
| Category | ID | Description |
| Adjustment | - | Removed the "System.Security.Cryptography.Pkcs", "System.Security.Permissions", and "System.Security.Cryptography.Xml" dependencies. |
| Adjustment | - | Introduced a platform-agnostic .NET 7.0 version that supports running on all operating systems. |
| Adjustment | - | Introduced platform-specific versions for .NET 7.0-Android33.0 and .NET 7.0-Windows10.0.19041, which are deeply optimized for their respective platforms. |
Spire.Doc 13.9.10 exposes core interfaces for fine-grained document styling control
We're pleased to announce the release of Spire.Doc 13.9.10. This version exposes several core interfaces for fine-grained document styling control, and supports removing document style as well as applying built-in table styles. More details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| New feature | - | Exposes core style interfaces ICharacterStyle, IListStyle, and ITableStyle to enable fine-grained document styling control. |
| New feature | SPIREDOC-7186 SPIREDOC-7365 | Removes CharacterFormat from IStyle, now implemented in CharacterStyle, ParagraphStyle, and TableStyle.
IStyle style = document.Styles.FindByName("Normal");
if (style != null && style is ICharacterStyle)
{
ICharacterStyle cStyle = style as ICharacterStyle;
cStyle.CharacterFormat.FontName = "cambria";
cStyle.CharacterFormat.FontSize = 14;
cStyle.CharacterFormat.Bold = true;
cStyle.CharacterFormat.TextColor = Color.FromArgb(42, 123, 136);
}
|
| New feature | SPIREDOC-2945 SPIREDOC-4871 | Adds the IStyle.RemoveSelf() method to remove a style from the document.
string pStyleName = "testStyle";
Document document = new Document();
ParagraphStyle pStyle = (ParagraphStyle)document.Styles.Add(StyleType.ParagraphStyle, pStyleName);
pStyle.CharacterFormat.FontName = "Calibri";
pStyle.CharacterFormat.FontSize = 16;
pStyle.CharacterFormat.Bold = true;
pStyle.CharacterFormat.TextColor = Color.DarkRed;
Section section = document.AddSection();
Paragraph para = section.AddParagraph();
para.ApplyStyle(pStyle);
para.AppendText("Hello world!");
Style firstParaStyle = document.FirstSection.Body.FirstParagraph.Format.Style;
document.SaveToFile(outputDocxFile1, FileFormat.Docx);
document.Styles[pStyleName].RemoveSelf();
document.SaveToFile(outputDocxFile2, FileFormat.Docx);
|
| New feature | - | Enables conditional table formatting via TableConditionalStyle, TableConditionalStyleCollection, and TableConditionalStyleType to style odd/even rows and columns.
Document doc = new Document();
Section section = doc.AddSection();
Table table = section.AddTable();
table.ResetCells(15, 4);
for (int i = 0; i < 15; i++)
{
TableRow row = table.Rows[i];
for (int j = 0; j < 4; j++)
{
TableCell cell = row.Cells[j];
cell.AddParagraph().AppendText(string.Format("{0} column.", (j % 2 == 0 ? "Even" : "Odd")));
cell.AddParagraph().AppendText(string.Format("Row banding {0}", (i % 3 == 0 ? "start" : "continuation")));
}
}
TableStyle tableStyle = (TableStyle)doc.Styles.Add(StyleType.TableStyle, "TestTableStyle1");
tableStyle.Borders.Color = Color.Black;
tableStyle.Borders.BorderType = BorderStyle.Double;
tableStyle.RowStripe = 3;
tableStyle.ConditionalStyles[TableConditionalStyleType.OddRowStripe].Shading.BackgroundPatternColor = Color.LightBlue;
tableStyle.ConditionalStyles[TableConditionalStyleType.EvenRowStripe].Shading.BackgroundPatternColor = Color.LightCyan;
tableStyle.ColumnStripe = 1;
tableStyle.ConditionalStyles[TableConditionalStyleType.EvenColumnStripe].Shading.BackgroundPatternColor = Color.LightPink;
table.ApplyStyle(tableStyle);
table.Format.StyleOptions = table.Format.StyleOptions | TableStyleOptions.ColumnStripe;
doc.SaveToFile(outputDocxFile1, FileFormat.Docx);
|
| New feature | - | Obsoletes the Table.TableStyleName and replaces it with Table.Format.StyleName. Adds Table.Format.Style and Table.ApplyStyle(ITableStyle) for applying styles to tables. |
| New feature | SPIREDOC-3647 | Exposes Style, StyleOptions, and StyleName properties in TableFormat, with TableStyleOptions enum support.
Document doc = new Document();
Section section = doc.AddSection();
TableStyle tableStyle = (TableStyle)doc.Styles.Add(StyleType.TableStyle, "TestTableStyle1");
tableStyle.HorizontalAlignment = RowAlignment.Center;
tableStyle.Borders.Color = Color.Blue;
tableStyle.Borders.BorderType = BorderStyle.Single;
Table table = section.AddTable();
table.ResetCells(1, 1);
table.Rows[0].Cells[0].AddParagraph().AppendText("Aligned to the center of the page");
table.PreferredWidth = PreferredWidth.FromPoints(300);
table.ApplyStyle(tableStyle);
section.AddParagraph().AppendText(" ");
tableStyle = (TableStyle)doc.Styles.Add(StyleType.TableStyle, "TestTableStyle2");
tableStyle.LeftIndent = 55;
tableStyle.Borders.Color = Color.Green;
tableStyle.Borders.BorderType = BorderStyle.Single;
table = section.AddTable();
table.ResetCells(1, 1);
table.Rows[0].Cells[0].AddParagraph().AppendText("Aligned according to left indent");
table.PreferredWidth = PreferredWidth.FromPoints(300);
table.Format.Style = tableStyle;
doc.SaveToFile(outputDocxFile1, FileFormat.Docx);
|
| New feature | - | Adds Document.AddStyle(DefaultTableStyle) method to apply built-in table styles.
Document doc = new Document();
Section section = doc.AddSection();
Table table = section.AddTable();
table.ResetCells(15, 4);
for (int i = 0; i < 15; i++)
{
TableRow row = table.Rows[i];
for (int j = 0; j < 4; j++)
{
TableCell cell = row.Cells[j];
cell.AddParagraph().AppendText(string.Format("{0} column.", (j % 2 == 0 ? "Even" : "Odd")));
cell.AddParagraph().AppendText(string.Format("Row banding {0}", (i % 2 == 0 ? "Even" : "Odd")));
}
}
TableStyle tableStyle = doc.AddStyle(DefaultTableStyle.LightListAccent3);
table.ApplyStyle(tableStyle);
doc.SaveToFile(outputDocxFile1, FileFormat.Docx);
|
Spire.Doc for Java 13.9.19 supports configuring images to be embedded in Base64 encoding when converting Word to Markdown
We're pleased to announce the release of Spire.Doc for Java 13.9.19. This version introduces enhanced Markdown export options, allowing better control over image encoding, output paths, link modes, lists, equations, and table formatting when converting Word documents. Meanwhile, multiple issues related to document revision comparison, page retrieval, content formatting, and exceptions during file conversions have also been fixed. More details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| New feature | SPIREDOC-11484 | Supports configuring images to be embedded in Base64 encoding when converting Word to Markdown.
doc.getMarkdownExportOptions().setImagesAsBase64(true); |
| New feature | — | Supports configuring the output directory and resource reference path for images when converting Word to Markdown.
doc.getMarkdownExportOptions().setImagesFolder(ImagesFolder); doc.getMarkdownExportOptions().setImagesFolderAlias(file_imageFile.getCanonicalPath()); |
| New feature | — | Supports configuring the link output mode (Auto/Inline/Reference) when converting Word to Markdown.
doc.getMarkdownExportOptions().setLinkOutputMode(MarkdownLinkOutputMode.Inline); |
| New feature | — | Supports configuring lists to be exported using Markdown syntax or plain text when converting Word to Markdown.
doc.getMarkdownExportOptions().setListOutputMode(MarkdownListOutputMode.PlainText); |
| New feature | — | Supports configuring equations to be exported as text, image, or MathML when converting Word to Markdown.
doc.getMarkdownExportOptions().setOfficeMathOutputMode(MarkdownOfficeMathOutputMode.Image); |
| New feature | — | Supports retaining specified content (e.g., tables) in HTML format when converting Word to Markdown.
doc.getMarkdownExportOptions().setSaveAsHtml(MarkdownSaveAsHtml.Tables); |
| New feature | — | Supports using "++" symbols to represent underline formatting when converting Word to Markdown.
doc.getMarkdownExportOptions().setSaveUnderlineFormatting(true); |
| New feature | — | Supports configuring text alignment (Left/Center/Right/Auto) for tables when converting Word to Markdown.
doc.getMarkdownExportOptions().setTableTextAlignment(TableTextAlignment.Center); |
| Bug | SPIREDOC-10545, SPIREDOC-11365, SPIREDOC-11366 | Fixed an issue where Word document revision comparison was inaccurate. |
| Bug | SPIREDOC-11262 | Fixed an issue where page retrieval was incorrect. |
| Bug | SPIREDOC-11270 | Fixed an exception "Shape width cannot be greater than 1584 points" when converting Markdown to Word. |
| Bug | SPIREDOC-11319 | Fixed an exception "Error loading file: Unsupported file format" when converting HTML to Word. |
| Bug | SPIREDOC-11371 | Fixed incorrect page breaking when converting Word to PDF. |
| Bug | SPIREDOC-11435 | Fixed incorrect indentation in table of contents when saving Word documents. |
| Bug | SPIREDOC-11473, SPIREDOC-11485 | Fixed a "NullPointerException" when converting Word to Markdown. |
| Bug | SPIREDOC-11479 | Fixed an issue where the output stream was blank when saving Word to Markdown. |
| Bug | SPIREDOC-11480 | Fixed incorrect behavior when accepting revisions. |
| Bug | SPIREDOC-11486 | Fixed an issue where clearing table row background color had no effect. |
| Bug | SPIREDOC-11487 | Fixed a "NullPointerException" when calling the removeSelfOnly method to remove content controls. |
| Bug | SPIREDOC-11500 | Fixed an issue where the application hung when replacing bookmark content after enabling revisions. |
| Bug | SPIREDOC-11501 | Fixed an issue where the "incorrect password" exception was not properly thrown when loading encrypted documents. |
| Bug | SPIREDOC-11505 | Fixed a "NullPointerException" when retrieving the PackageFileName of an OLE object. |
| Bug | SPIREDOC-11506 | Fixed incorrect text retrieval. |
| Bug | SPIREDOC-11517 | Fixed an "Unsupported file format" exception when loading HTML files. |
| Bug | SPIREDOC-11548 | Fixed incorrect comment timestamps after saving Word documents. |