Spire.Barcode for Python 7.3.0 adds support for macOS on ARM
We’re pleased to announce the release of Spire.Barcode for Python 7.3.0. This version adds support for macOS on ARM architecture, enabling developers to run barcode generation and recognition workflows more efficiently on Apple Silicon devices. More details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| New feature | - | Added support for macOS on ARM architecture. |
Spire.PDF for Java 12.2.1 enhances the conversion from PDF to Word
We’re excited to announce the release of Spire.PDF for Java 12.2.1. This update primarily addresses PDF-to-Word conversion issues. More details are as follows.
Here is a list of changes made in this release
| Category | ID | Description |
| Bug Fix | SPIREPDF-5896 | Fixed the issue where image content appeared blurry when converting PDF to Word. |
| Bug Fix | SPIREPDF-7700 SPIREPDF-7914 | Fixed the issue where incorrect conversion results occurred in PDF to Word. |
| Bug Fix | SPIREPDF-7933 | Fixed the issue where loading PDF documents resulted in a "file structure is not valid" error. |
| Bug Fix | SPIREPDF-7895 SPIREPDF-7905 | Optimized the overload method (setBackgroundImage(PdfImage image)) for setting background images. |
Spire.Presentation 11.2.1 enhances the conversion from PowerPoint to PDF
We're glad to announce the release of Spire. Presentation 11.2.1. This version mainly fixes three issues that arose when converting PowerPoint to PDF and SVG. Check below for the details.
Here is a list of changes made in this release
| Category | ID | Description |
| Bug Fix | SPIREPPT-2841 | Fixed the issue where rendering effects were inconsistent when converting PowerPoint to SVG. |
| Bug Fix | SPIREPPT-3073 | Fixed the issue that extraneous log information was generated when converting PowerPoint to PDF. |
| Bug Fix | SPIREPPT-3073 | Fixed the issue that charts were missing when converting PowerPoint to PDF. |
Spire.XLS for Python 16.2.0 supports macOS on ARM
We're pleased to announce the release of Spire.XLS for Python 16.2.0. This version supports macOS on ARM architecture. Meanwhile, some issues that occurred when copying OLE objects, deleting macros, converting text-formatted values to numbers, and saving Excel documents to EMF 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 | SPIREXLS-5183 | Added support for macOS on ARM architecture. |
| Bug Fix | SPIREXLS-5970 | Fixes the issue where copied OLE objects displayed incorrectly in WPS. |
| Bug Fix | SPIREXLS-6011 | Fixes the issue where deleting macros did not work correctly. |
| Bug Fix | SPIREXLS-6012 | Fixes the issue where no error message was shown for the incorrect setting workbook.ConverterSetting.Xdpi (should be XDpi). |
| Bug Fix | SPIREXLS-6026 | Fixes the issue where converting text-formatted values to number format failed. |
| Bug Fix | SPIREXLS-6032 | Fixes the issue where saving an Excel document to EMF threw an exception. |
Spire.Presentation for Python 11.2.0 adds support for macOS on ARM
We’re pleased to announce the release of Spire.Presentation for Python 11.2.0. This version adds support for macOS on ARM architecture. Additionally, an issue involving content loss when converting PPT files to images has been fixed. More details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| New feature | SPIREPPT-3037 | Added support for macOS on ARM architecture. |
| Bug Fix | SPIREPPT-3037 | Fixed the issue of content loss when converting PPT to images. |
Spire.Office 11.1.0 is released
We’re excited to announce the release of Spire.Office 11.1.0. In this version, Spire.Doc supports creating and manipulating VAB macros in Word files; Spire.XLS supports converting a specified cell range to HTML; Spire.Presentationm supports highlighting text based on regular expression matches; Spire.PDF supports saving files in PDF 2.0 version. Moreover, a large number of bugs have been successfully fixed in this update.
In this version, the most recent versions of Spire.Doc, Spire.PDF, Spire.XLS, Spire.Presentation, Spire.Barcode, Spire.DocViewer, Spire.PDFViewer, and Spire.Email are included.
DLL Versions:
- Spire.Doc.dll v14.1.12
- Spire.PDF.dll v12.1.6
- Spire.XLS.dll v16.1.4
- Spire.Presentation.dll v11.1.1
- 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.9
- Spire.PdfViewer.Forms.dll v8.2.9
- Spire.Spreadsheet.dll v7.5.3
- Spire.OfficeViewer.Forms.dll v8.8.1
Here is a list of changes made in this release
Spre.doc
| 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 Fix | SPIREDOC-11523 | Fixed the issue where the program hangs when converting Word to PDF. |
| Bug Fix | SPIREDOC-11632 | Fixed the issue where line breaks are incorrect when adding multi-line watermarks. |
| Bug Fix | SPIREDOC-11692 | Fixed the issue where table of contents fields fail to update. |
| Bug Fix | SPIREDOC-11703 | Fixed the issue where the result is incorrect when converting Markdown to Word. |
| Bug Fix | SPIREDOC-11706 | Fixed the issue where document saving takes a long time when adding multi-line text with "\r\n". |
| Bug Fix | SPIREDOC-11727 | Fixed the issue where extra blank paragraphs appear when adding HTML to Word. |
| Bug Fix | SPIREDOC-11744 | Fixed the issue where images are blurry when converting Word to HTML. |
| Bug Fix | SPIREDOC-11767 | Fixed the issue where content is inconsistent when loading and saving RTF files. |
| Bug Fix | SPIREDOC-10843 | Fixed the issue where the program hung for a long time when using new FixedLayoutDocument(document). |
| Bug Fix | SPIREDOC-11532 | Fixed the issue where the program hung for a long time when converting Word documents to PDF. |
| Bug Fix | SPIREDOC-11758 | Fixed the issue where an incorrect numbering format was returned when retrieving lists. |
| Bug Fix | SPIREDOC-11728 SPIREDOC-11730 SPIREDOC-11731 | Fixed the issue where incorrect content was generated when converting Word documents to PDF. |
Spre.XLS
| 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 Fix | SPIREXLS-6044 | Fixed an issue where OLE objects in the document could not be deleted successfully. |
Spire.Presentation
| Category | ID | Description |
| New Feature | - | Added support for highlighting text based on regular expression matches.
// Simple word matching Regex regex = new Regex(@"\bhello\b"); IAutoShape shape = (IAutoShape)ppt.Slides[0].Shapes[0]; TextHighLightingOptions options = new TextHighLightingOptions(); shape.TextFrame.HighLightRegex(regex, Color.Red, options); |
| New Feature | SPIREPPT-3051 | Fixed the issue where some content was lost during PPTX-to-PDF conversion. |
| Bug Fix | SPIREPPT-3058 | Fixed the issue where the configured default font was not applied during PPTX-to-PDF conversion. |
Spire.PDF
| 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 Fix | SPIREPDF-6905 | Fixes the issue where text color was rendered incorrectly when converting PDF to images. |
| Bug Fix | SPIREPDF-7866 | Fixes the issue where memory was not properly released during text replacement. |
| Bug Fix | SPIREPDF-7875 | Fixes the issue where QR codes were missing after converting PDF to PDF/A or images. |
| Bug Fix | SPIREPDF-7884 | Fixes the issue where an ArgumentOutOfRangeException was thrown when loading XPS files. |
| Bug Fix | SPIREPDF-7892 | Fixes the issue where text extraction failed under certain conditions. |
| Bug Fix | SPIREPDF-7867 | Fixes the issue where rendering effects were incorrect when converting PDF to Word. |
| Bug Fix | SPIREPDF-7097 | Fixes the issue where content copied from the result document was incorrect after converting PDF to PDF/A-3B. |
| Bug Fix | SPIREPDF-7841 | Fixes the page numbering style issue when using ChromeHtmlConverter to convert HTML to PDF for printing. |
| Bug Fix | SPIREPDF-7847 | Fixes the issue where obtaining font properties of text box fields threw an "ArgumentOutOfRangeException". |
| Bug Fix | SPIREPDF-7888 | Optimizes timestamp requests by reducing calls to timestamp servers and improving validation. |
Spire.Office for Java 11.1.0 is released
We are pleased to announce the release of Spire.Office for Java 11.1.0. In this version, Spire.Doc for Java supports applying custom styles to tables; Spire.PDF for Java supports saving PDF comparison results to file streams; Spire.XLS for Java supports inserting, retrieving, and updating equations; Spire.Presentation for Java supports reading customer data from shapes. This version also addresses a number of known issues and minor fixes across other components. Details are provided below.
Below is a summary of the changes included in this release.
Spire.Doc for Java
| Category | ID | Description |
| Optimization | - | Deprecated the Document.getListStyles() property, replaced it with Document.getListReferences(). |
| Optimization | - | Removed the public constructors of ListStyle. Added StyleCollection.add(ListType listType, string name) to create a ListStyle.
ListStyle listStyle = document.getStyles().add(ListType.Numbered, "levelstyle");
listStyle.isCustomStyle(true);
ListLevelCollection levels = listStyle.getListRef().getLevels();
levels.get(0).setPatternType(ListPatternType.Arabic);
levels.get(0).setStartAt(1);
levels.get(0).getCharacterFormat().setFontName("Trebuchet MS");
|
| Optimization | - | Updated the method for applying a ListStyle to a paragraph.
paragraph.getListFormat().applyStyle(ListStyle listStyle); paragraph.getListFormat().setListLevelNumber(int leverNumber) or paragraph.getListFormat().applyListRef(ListDefinitionReference list, int leverNumber); |
| Optimization | - | Removed the ListFormat.getCurrentListStyle() method, replaced it with ListFormat.getCurrentListRef(). |
| New feature | - | Added the add(ListTemplate template) method to ListCollection to create multi-level lists from built-in templates.
Document document = new Document();
Section sec = document.addSection();
Paragraph paragraph = sec.addParagraph();
// Create default bullet list template
ListTemplate template = ListTemplate.Bullet_Default;
ListDefinitionReference listRef = document.getListReferences().add(template);
// Create default numbered list template
ListTemplate template1 = ListTemplate.Number_Default;
listRef = document.getListReferences().add(template1);
listRef.getLevels().get(2).setStartAt(4);// Set the third level to start at number 4
// Add paragraph and apply numbered list style (level 2)
paragraph = sec.addParagraph();
paragraph.appendText("List Item 1");
// Apply level 2 (index starts at 0; 1 means the second level)
paragraph.getListFormat().applyListRef(listRef, 1);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 2");
// Apply level 3
paragraph.getListFormat().applyListRef(listRef, 2);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 3");
// Apply level 2
paragraph.getListFormat().applyListRef(listRef, 1);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 4");
// Apply level 3
paragraph.getListFormat().applyListRef(listRef, 2);
document.saveToFile(outputFile, FileFormat.Docx);
document.close();
|
| New feature | - | Added the addSingleLevelList(ListTemplate listTemplate) method to ListCollection for quickly creating single-level lists.
Document document = new Document();
Section sec = document.addSection();
Paragraph paragraph = sec.addParagraph();
// Create Arabic numeral numbered list template (e.g., "1.", "2.", ...)
ListTemplate template = ListTemplate.Number_Arabic_Dot;
// Use addSingleLevelList to create a single-level list reference
ListDefinitionReference listRef = document.getListReferences().addSingleLevelList(template);
int levelcount = listRef.getLevels().getCount();//Check level count
boolean res=listRef.isMultiLevel();
// Add first list item
paragraph = sec.addParagraph();
paragraph.appendText("List Item 1");
paragraph.getListFormat().applyListRef(listRef, 0);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 2");
paragraph.getListFormat().applyListRef(listRef, 0);
document.saveToFile(outputFile, FileFormat.Docx);
document.close();
|
| New feature | - | Added the ListLevel.equals(ListLevel level) method to compare whether two ListLevel objects are equal. |
| New feature | - | Added methods for creating, retrieving, and deleting picture bullets.
Document document = new Document();
Section sec = document.addSection();
Paragraph paragraph = sec.addParagraph();
// Create custom bulleted list style
ListStyle listStyle = document.getStyles().add(ListType.Bulleted, "bulletList");
// Get level configurations of this list style
ListLevelCollection Levels = listStyle.getListRef().getLevels();
// Set picture bullet for level 1
Levels.get(0).createPictureBullet();
Levels.get(0).getPictureBullet().loadImage(imag_Path_1);
// Set picture bullet for level 2
Levels.get(1).createPictureBullet();
Levels.get(1).getPictureBullet().loadImage(imag_Path_2);
// Add first list item
paragraph = sec.addParagraph();
paragraph.appendText("List Item 1");
paragraph.getListFormat().applyStyle(listStyle);
// Add second list item
paragraph = sec.addParagraph();
paragraph.appendText("List Item 1.1");
paragraph.getListFormat().applyStyle(listStyle);
paragraph.getListFormat().setListLevelNumber(1);
// Delete picture bullet for level 1
Levels.get(0).deletePictureBullet();
document.saveToFile(outputFile, FileFormat.Docx);
document.close();
|
| 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 Fix | SPIREDOC-10843 | Fixed an issue where the application hung when processing a structured document. |
| Bug Fix | SPIREDOC-11439 | Fixed an issue where the comparison of the table of contents failed. |
| Bug Fix | SPIREDOC-11532 | Fixed an issue where the application hung when converting Word to PDF. |
| Bug Fix | SPIREDOC-11605 SPIREDOC-11712 | Fixed an issue where the table layout was incorrect when converting Word to PDF. |
| Bug Fix | SPIREDOC-11629 | Fixed an issue where text positioning was incorrect when converting Word to PDF. |
| Bug Fix | SPIREDOC-11699 | Fixed an issue where text line wrapping was incorrect when converting Word to PDF while following WPS rules. |
| Bug Fix | SPIREDOC-11709 | Fixed an issue where the application hung when converting MHT to PDF. |
| Bug Fix | SPIREDOC-11741 | Fixed an issue that Avira Free Security Suite falsely detected a virus in spire.doc.jar. |
| Bug Fix | SPIREDOC-10278 | Fixes the issue where paragraph indentation was incorrect when converting Word to PDF. |
| Bug Fix | SPIREDOC-11142 | Fixes the issue where image layout inside tables was rendered incorrectly during Word-to-PDF conversion. |
| Bug Fix | SPIREDOC-11688 | Fixes the issue where Word-to-PDF conversion did not correctly apply formatting rules specific to WPS Office. |
| Bug Fix | SPIREDOC-11714 | Fixes a NullPointerException that occurred when converting Word to Markdown. |
| Bug Fix | SPIREDOC-11718 | Fixes a NullPointerException that occurred during Word-to-PDF conversion. |
| Bug Fix | SPIREDOC-11734 | Fixes the issue where the application would hang when updating TOC (Table of Contents) fields. |
| Bug Fix | SPIREDOC-11735 | Fixes the issue where page number fields failed to update correctly. |
| Bug Fix | SPIREDOC-11757 | Fixes an IllegalStateException ("Unexpected ST_TrueFalse value") during Word-to-PDF conversion. |
Spire.XLS for Java
| 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 Fix | SPIREXLS-6045 | Fixed an issue where an “ArrayIndexOutOfBoundsException” was thrown when converting HTML to Excel. |
| Bug Fix | SPIREXLS-6053 | Fixed an issue where formula calculation took an excessively long time. |
| Bug Fix | SPIREXLS-6056 | Fixed an issue where formulas displayed an unexpected blue background when converting XLSX to XLS. |
| Bug Fix | SPIREXLS-6058 | Fixed an issue where extra borders appeared in the output when converting Excel to PDF. |
| Bug Fix | SPIREXLS-6062 | Fixed an issue where a “NullPointerException” occurred when saving XLS files to XLSX format. |
| Bug Fix | SPIREXLS-6064 | Fixed an issue where copying cell content containing embedded images to another Excel workbook failed. |
| Bug Fix | SPIREXLS-6066 | Fixed an issue where a “NullPointerException” was thrown during Excel-to-PDF conversion. |
| Bug Fix | SPIREXLS-6067 | Fixed an issue where local image files could not be deleted after inserting pictures into Excel due to unreleased file handles. |
Spire.PDF for Java
| 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 Fix | SPIREPDF-6373 | Optimized performance when converting PDF documents to images. |
| Bug Fix | SPIREPDF-6406 | Fixed an OutOfMemoryError that occurred during OFD to PDF conversion. |
| Bug Fix | SPIREPDF-7189 | Improved the rendering quality of PDF to Word conversion results when opened in WPS. |
| Bug Fix | SPIREPDF-7305 | Fixed inconsistent background colors and partial font rendering issues when printing PDFs. |
| Bug Fix | SPIREPDF-7407 | Enhanced layout accuracy when converting PDFs to flowable Word documents. |
| Bug Fix | SPIREPDF-7560 | Resolved an error related to PdfTrueTypeFont in multi-threaded environments. |
| Bug Fix | SPIREPDF-7666 | Fixed incorrect content generation when using the "Yu Mincho" font. |
| Bug Fix | SPIREPDF-7687 | Fixed text misalignment issues in PDF to PDF/A-1A conversion. |
| Bug Fix | SPIREPDF-7782 | Fixed extra spaces appearing in extracted table content. |
| Bug Fix | SPIREPDF-7820 | Resolved missing formulas when converting PDF documents to images. |
| Bug Fix | SPIREPDF-7869 | Fixed overlapping text issues in PDF to HTML conversion. |
| Bug Fix | SPIREPDF-7887 | Resolved the "structure is not valid" error when loading PDF documents. |
| Bug Fix | SPIREPDF-7890 | Fixed an ArrayIndexOutOfBoundsException that occurred when saving PDFs after adding text watermarks. |
| Bug Fix | SPIREPDF-7898 | Fixed content inconsistency issues during SVG to PDF conversion. |
| Bug Fix | SPIREPDF-7910 | Resolved an error ("For input string: '36.8s'") during OFD to PDF conversion. |
| Bug Fix | SPIREPDF-7911 | Fixed incorrect content issues in OFD to PDF conversion. |
Spire.Presentation for Java
| Category | ID | Description |
| New feature | - | Added support for reading customer data from shapes.
Presentation ppt = new Presentation();
ppt.loadFromFile(inputFile);
List dataList = ppt.getSlides().get(0).getShapes().get(0).getCustomerDataList();
System.out.println(dataList.size());
for(int i = 0; i < dataList.size(); i++)
{
String name = dataList.get(i).getName();
String content = dataList.get(i).getXML();
}
|
| New feature | - | Added support for setting audio fade-in and fade-out durations.
Presentation ppt = new Presentation(); ppt.loadFromFile(inputFile); Rectangle2D.Double audioRect = new Rectangle2D.Double(220, 240, 80, 80); IAudio audio=ppt.getSlides().get(0).getShapes().appendAudioMedia(inputFile_1, audioRect); // Set the duration of the starting fade for 13s audio.setFadeInDuration(13000f); // Set the duration of the ending fade for 20s audio.setFadeOutDuration(20000f); ppt.saveToFile(outputFile, FileFormat.PPTX_2016); ppt.dispose(); |
| New feature | - | Added support for trimming audio playback range.
Presentation ppt = new Presentation(); ppt.loadFromFile(inputFile); Rectangle2D.Double audioRect = new Rectangle2D.Double(220, 240, 80, 80); IAudio audio=ppt.getSlides().get(0).getShapes().appendAudioMedia(inputFile_1, audioRect); // Set the start trimming time 8 seconds audio.setTrimFromStart(8000f); // Set the end trimming time 13 seconds audio.setTrimFromEnd(13000f); ppt.saveToFile(outputFile, FileFormat.PPTX_2016); ppt.dispose(); |
| New feature | - | Added support for setting table transparency.
Presentation presentation = new Presentation();
presentation.loadFromFile("data/test.pptx");
Double[] widths = new Double[]{100d, 100d, 150d, 100d, 100d};
Double[] heights = new Double[]{15d, 15d, 15d, 15d, 15d, 15d, 15d, 15d, 15d, 15d, 15d, 15d, 15d};
// Add a table
ITable table = presentation.getSlides().get(0).getShapes().appendTable(
(float) presentation.getSlideSize().getSize().getWidth() / 2 - 275, 90, widths, heights);
// Set overall table background transparency to 50% (0.0 = opaque, 1.0 = fully transparent)
table.getFill().setTransparency(0.5f);
// Customize the fill color of the cell at row 0, column 0 to blue
table.get(0, 0).getFillFormat().setFillType(FillFormatType.SOLID);
table.get(0, 0).getFillFormat().getSolidColor().setColor(Color.BLUE);
presentation.saveToFile("result.pptx", FileFormat.PPTX_2016);
|
| New feature | SPIREPPT-2349 SPIREPPT-2950 | Added support for parsing WEBP format images during conversions. |
| Bug Fix | SPIREPPT-3035 | Fixed the issue where adding a LaTeX formula caused the application to throw a "NullPointerException". |
| Bug Fix | SPIREPPT-3056 | Fixed the issue where a false positive virus alert was triggered by Avira Security Suite for spire.presentation.jar. |
| Bug Fix | SPIREPPT-3069 | Fixed the issue where adding the "\dots" formula caused a "NullPointerException" error. |
| Bug Fix | SPIREPPT-3071 | Fixed the issue with inconsistent content when converting PPT to PDF. |
Spire.OCR 2.2.2 adds support for Latin script recognition
We’re pleased to announce the release of Spire.OCR 2.2.2. This version adds support for recognizing Latin script text. In addition, recognition accuracy for Chinese text has been improved. More details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| New feature | SPIREOCR-127 | Added support for recognizing Latin script text. |
| Bug | SPIREOCR-28 | Fixed poor recognition accuracy for Traditional Chinese text. |
| Bug | SPIREOCR-125 | Fixed incorrect recognition of certain Chinese characters. |
Spire.Doc for C++ 14.1.4 aligns a series of features with the .NET version
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.
|
|||||||||||||||||||||||||||||||||
| New feature | - | Enhanced revision tracking, content controls, and document comparison features.
|
|||||||||||||||||||||||||||||||||
| New feature | - | Improved accessibility and export functionality.
|
|||||||||||||||||||||||||||||||||
| New feature | - | Refactored the list system.
|
|||||||||||||||||||||||||||||||||
| 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. |
Spire.XLS for Java 16.1.3 supports inserting, retrieving, and updating equations
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. |