Spire.Presentation 11.5.1 optimizes the conversion from PowerPoint to PDF
We're pleased to announce the release of Spire.Presentation 11.5.1. This version optimizes the conversion from PowerPoint to PDF. Meanwhile, some issues that occurred when loading PPT documents, converting shapes to SVG, and retrieving images have also been successfully fixed. More details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| Bug Fix | SPIREPPT-3105 | Fixes the issue where loading PPT format documents threw an exception. |
| Bug Fix | SPIREPPT-3106, SPIREPPT-3119, SPIREPPT-3121, SPIREPPT-3123 | Fixes the issue where converting PowerPoint to PDF resulted in incorrect rendering. |
| Bug Fix | SPIREPPT-3114 | Fixes the issue where shapes became blank when converted to SVG. |
| Bug Fix | SPIREPPT-3116 | Fixes the issue where retrieving images from PowerPoint documents threw a "Parameter is not valid" exception. |
| Bug Fix | SPIREPPT-3122 | Fixes the issue where images were missing after converting PowerPoint to PDF. |
Spire.PDF 12.5.1 Adds Support for SHA-2 and SHA-256 Digital Signature Algorithms
We’re pleased to announce the release of Spire.PDF 12.5.1. This version adds support for SHA-2 and SHA-256 hash algorithms in digital signatures. It also fixes several issues, including content loss when printing PDF documents. More details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| New Feature | SPIREPDF-4878 | Added support for SHA-2 and SHA-256 hash algorithms in digital signatures.
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(inputFile);
X509Certificate2 cert = new X509Certificate2(inputFile_pfx, "e-iceblue");
IPdfSignatureFormatter formatter = new PdfPKCS7Formatter(cert, false);
PdfMDPSignatureMaker pdfMDPSignatureMaker = new PdfMDPSignatureMaker(pdf, formatter);
PdfSignature signature = pdfMDPSignatureMaker.Signature;
signature.Name = "e-iceblue";
signature.ContactInfo = "028-81705109";
signature.Location = "chengdu";
signature.Reason = " this document";
PdfSignatureAppearance appearance = new PdfSignatureAppearance(signature);
appearance.NameLabel = "Signer: ";
appearance.ContactInfoLabel = "ContactInfo: ";
appearance.LocationLabel = "Loaction: ";
appearance.ReasonLabel = "Reason: ";
pdfMDPSignatureMaker.MakeSignature("signName", pdf.Pages[0], 100, 100, 250, 200, appearance);
foreach (HashAlgorithmType hashAlgorithmType in Enum.GetValues(typeof(HashAlgorithmType)))
{
if (string.Equals(hashAlgorithmType.ToString(), "SM3", StringComparison.OrdinalIgnoreCase))
{
continue;
}
//default value of HashAlgorithm is SHA256
formatter.Properties.HashAlgorithm = hashAlgorithmType;
try
{
pdf.SaveToFile( "out.pdf", FileFormat.PDF);
}
catch (Exception ex)
{
Console.WriteLine($"error:{ex.Message}");
}
}
pdf.Dispose();
|
| Bug Fix | SPIREPDF-8016 | Fixed an issue with content loss when printing PDF documents. |
| Bug Fix | SPIREPDF-8017 | Fixed an issue where an "ArgumentException" was thrown when converting PDF to images. |
| Bug Fix | SPIREPDF-8026 | Fixed an issue where "Object reference not set to an instance of an object" was thrown when merging PDF documents. |
| Bug Fix | SPIREPDF-8031 | Fixed an issue where the retrieved font was incorrect after filling PdfTextBoxField content with a specified font. |
| Bug Fix | SPIREPDF-8042 | Fixed an issue where an "IndexOutOfRangeException" was thrown when saving the result document while overwriting the source file. |
Spire.XLS for Python 16.5.0 fixes a wrapping issue in Pivot tables
We’re pleased to announce the release of Spire.XLS for Python 16.5.0. This update focuses primarily on resolving an issue where text wrapping in Pivot table cells did not work. For details, please see the changes below.
Here is a list of changes made in this release
| Category | ID | Description |
| Bug Fix | SPIREXLS-6095 | Fixed the issue where wrapping text in a Pivot table cell didn’t work. |
| Bug Fix | SPIREXLS-6127 | Corrected the enumeration class name from SortComparsionType to SortComparisonType. |
Spire.Office.11.4.0 is released
We’re pleased to announce the release of Spire.Office 11.4.0. In this version, supports saving charts as templates and supports multidimensional document comparison via new CompareOptions. Spire.XLS enhances stability of PDF and SVG conversion. Spire.Presentation adds support for saving PPTX to video. Spire.PDF optimizes memory consumption during PDF merging and enhances the conversions from PDF to PDF/A and images. Moreover, a large number of known bugs has been fixed successfully in this version.
In this version, the most recent versions of Spire.Doc, Spire.PDF, Spire.XLS, Spire.Presentation, Spire.Barcode, Spire.DocViewer, Spire.PDFViewer, Spire.Email, Spire.Spreadsheet, and Spire.OfficeViewer are included.
DLL Versions:
- Spire.Doc.dll v14.4.9
- Spire.Pdf.dll v12.4.5
- Spire.XLS.dll v16.4.2
- Spire.Presentation.dll v11.4.5
- Spire.Barcode.dll v7.5.0
- Spire.Email.dll v6.8.0
- Spire.DocViewer.Forms.dll v8.9.5
- Spire.PdfViewer.Asp.dll v8.2.13
- Spire.PdfViewer.Forms.dll v8.2.13
- Spire.Spreadsheet.dll v7.5.3
- Spire.OfficeViewer.Forms.dll v8.8.1
Here is a list of changes made in this release
Spre.doc
| Category | ID | Description |
| Adjustment | - | Renamed ToPdfParameterList.IsAtlast to ToPdfParameterList.IsAtLeast.
ToPdfParameterList.IsAtlast-->ToPdfParameterList.IsAtLeast |
| Adjustment | - | Renamed CompareOptions.IgnoreTable to CompareOptions.IgnoreTables for naming consistency. |
| New Feature | SPIREDOC-10293 | Supports saving charts as templates.
Document doc = new Document();
doc.LoadFromFile(inputFile);
int count = 1;
foreach (Section sec in doc.Sections)
{
foreach (Spire.Doc.Documents.Paragraph paragraph in sec.Paragraphs)
{
foreach (DocumentObject obj in paragraph.ChildObjects)
{
if (obj is ShapeObject shape)
{
Chart chart = shape.Chart;
if (chart == null)
continue;
string fileName = Path.Combine(outputPath, $"{count}.crtx");
chart.SaveAsTemplate(fileName);
count++;
}
}
}
}
|
| New Feature | SPIREDOC-11457 | Adds the GeneratorName property to allow configuring the Producer metadata when converting to PDF.
string genName = "Testing For Set Producer";
Document doc = new Document();
doc.LoadFromFile(filename);
ToPdfParameterList toPdf = new ToPdfParameterList();
toPdf.GeneratorName = genName;
doc.SaveToFile("result.pdf", toPdf);
|
| New Feature | SPIREDOC-10828 | Adds XValues and YValues properties to retrieve data values for specified series in charts.
Document doc = new Document();
doc.LoadFromFile(inputFile);
StringBuilder sb = new StringBuilder();
int number = 1;
foreach (Section sec in doc.Sections)
{
foreach (Paragraph paragraph in sec.Paragraphs)
{
for (int i = 0; i < paragraph.ChildObjects.Count; i++)
{
DocumentObject obj = paragraph.ChildObjects[i];
if (obj is ShapeObject)
{
ShapeObject shape = obj as ShapeObject;
Chart chart = shape.Chart;
sb.Append("\r\n\r\nPage " + number + ":\r\n" + "Get all X-axis data: ");
for (int x = 0; x < chart.XValues.Count; x++)
{
ChartValue xVal = chart.XValues[x];
// Get all X-axis data values
sb.Append(xVal.StringValue + " ");
}
// Get the first series
ChartSeries series = chart.Series[0];
sb.Append("\r\nGet Y-axis data: ");
foreach (ChartValue yVal in series.YValues)
{
// Get all Y-axis data values of the first series
sb.Append(yVal.Value + " ");
}
}
}
}
number++;
}
|
| New Feature | SPIREDOC-11457 | Supports reading and setting chart data label positions.
Document doc = new Document();
foreach (ChartDataLabelPosition position in Enum.GetValues(typeof(ChartDataLabelPosition)))
{
Section section = doc.AddSection();
section.AddParagraph().AppendText(position.ToString());
Spire.Doc.Documents.Paragraph newPara = section.AddParagraph();
ShapeObject shape = newPara.AppendChart(ChartType.Pie, 500, 300);
Chart chart = shape.Chart;
chart.Series[0].HasDataLabels = true;
chart.Series[0].DataLabels.ShowCategoryName = true;
chart.Series[0].DataLabels.ShowValue = true;
// Set position
chart.Series[0].DataLabels.Position = position;
ShapeObject shape2 = newPara.AppendChart(ChartType.Bubble, 500, 300);
Chart chart2 = shape2.Chart;
chart2.Series[0].HasDataLabels = true;
chart2.Series[0].DataLabels.ShowCategoryName = true;
chart2.Series[0].DataLabels.ShowValue = true;
chart2.Series[0].DataLabels.Position = position;
}
doc.SaveToFile(outputFile, FileFormat.Docx);
doc.Dispose();
|
| New Feature | SPIREDOC-11910 | Adds several new properties to CompareOptions to support multi-dimensional document comparison:
· CompareMoves: Specifies whether to ignore moved content.
· IgnoreCaseChanges: Specifies whether to ignore case changes. · IgnoreFields: Specifies whether to ignore fields. · IgnoreFootnotes: Specifies whether to ignore footnotes. · IgnoreComments: Specifies whether to ignore comments. · IgnoreTextboxes: Specifies whether to ignore text boxes. Document doc1 = new Document();
doc1.LoadFromFile(inputFile_1);
Document doc2 = new Document();
doc2.LoadFromFile(inputFile_2);
CompareOptions options = new CompareOptions();
options.CompareMoves = false;
options.IgnoreCaseChanges = false;
options.IgnoreComments = true;
options.IgnoreFields = true;
options.IgnoreFootnotes = true;
options.IgnoreTables = true;
options.IgnoreTextboxes = true;
doc1.Compare(doc2, "user", new DateTime(), options);
doc1.SaveToFile(outputFile, FileFormat.Docx2013);
|
| Bug Fix | SPIREDOC-11586 | Fixes the issue where tables were converted incorrectly when converting Markdown to Docx or PDF. |
| Bug Fix | SPIREDOC-11854 | Fixes the issue where merged cells in tables were split incorrectly. |
| Bug Fix | SPIREDOC-11871 | Fixes the issue where a System.InvalidCastException was thrown when merging Word documents. |
| Bug Fix | SPIREDOC-11874 | Fixes the issue where a System.NullReferenceException was thrown when loading HTML. |
Spre.XLS
| Category | ID | Description |
| Adjustment | SPIREXLS-6127 | Corrected the spelling of the SortComparsionType enum to SortComparisonType. |
| Bug Fix | SPIREXLS-6095 | Fixed an issue where the text wrapping style did not apply to pivot table cells. |
| Bug Fix | SPIREXLS-6117 | Fixed an issue where an ArgumentOutOfRangeException was thrown when loading Excel documents. |
| Bug Fix | SPIREXLS-6126 | Fixed an issue where formatting was incorrect when converting Excel to PDF or SVG. |
Spire.Presentation
| Category | ID | Description |
| New Feature | SPIREPPT-3096 | Added support for saving PPTX files to video formats (.mp4/.wmv).
Note: This feature requires specifying the path to ffmpeg. Presentation ppt = new Presentation();
ppt.LoadFromFile(inputFile);
SaveToVideoOption saveOption = new SaveToVideoOption(ffmpegDir);
ppt.SaveToVideoOption=saveOption;//Default: 5 seconds per slide.
ppt.SaveToFile(outputFile_mp4, FileFormat.MP4);
ppt.SaveToFile(outputFile_wmv, FileFormat.WMV);
ppt.Dispose();
|
| Bug Fix | SPIREPPT-3092 | Fixed an issue where data label formatting was incorrect when converting PowerPoint files to PDF. |
| Bug Fix | SPIREPPT-3094 | Fixed an issue where an InvalidOperationException was thrown when converting shapes to SVG. |
| Bug Fix | SPIREPPT-3097 | Fixed an issue where exported files had excessively large sizes when splitting PowerPoint presentations. |
| Bug Fix | SPIREPPT-3098 | Fixed an issue where shapes were clipped during PowerPoint to PDF conversion. |
| Bug Fix | SPIREPPT-3099 | Fixed an issue where some images were missing when converting slides to images. |
| Bug Fix | SPIREPPT-3102 | Fixed an issue where extra incorrect images appeared during PowerPoint to PDF conversion. |
Spire.PDF
| Category | ID | Description |
| Optimization | SPIREPDF-7878 SPIREPDF-7958 | Optimized memory consumption during PDF merging. |
| Bug Fix | SPIREPDF-7850 | Fixed an issue where removing image watermarks from PDFs failed. |
| Bug Fix | SPIREPDF-7963 | Fixed an issue where keywords were not correctly identified when using “TextFindParameter.WholeWord”. |
| Bug Fix | SPIREPDF-7980 | Fixed an issue where content stream markers did not correctly include attribute placeholders when an “ArtifactPropertyList” object was passed to the “BeginMarkedContent” method. |
| Bug Fix | SPIREPDF-7164 | Fixed the issue where the page content was distorted when copying a page via CreateTemplate(). |
| Bug Fix | SPIREPDF-7803 | Fixed the issue where concurrent HTML to PDF conversions occasionally failed to generate documents. |
| Bug Fix | SPIREPDF-7948 | Fixed the issue where printing a PDF produced extra, unintended content. |
| Bug Fix | SPIREPDF-7984 | Fixed the issue where text box fields with the same name could not be associated. |
| Bug Fix | SPIREPDF-7998 | Fixed the issue where content went missing when converting PDF to images. |
| Bug Fix | SPIREPDF-8003 | Fixed the issue where the program threw an ArgumentOutOfRangeException when merging PDFs. |
| Bug Fix | SPIREPDF-8004 | Fixed the issue where the program threw an ArgumentOutOfRangeException when merging PDF documents without applying a license. |
| Bug Fix | SPIREPDF-8010 | Fixed the issue where the description in document properties was incorrect when converting PDF to PDF/A. |
| Bug Fix | SPIREPDF-8014 | Fixed the issue where the position and size information of videos in PDF files could not be retrieved. |
Spire.Office for Java 11.4.0 is released
We're pleased to announce the release of Spire.Office for Java 11.4.0. In this version, the Spire.Doc for Java supports saving charts as templates and retrieving data values from charts. Spire.PDF for Java optimizes memory consumption when merging PDFs. In addition, many known issues that occurred during the conversion and processing of Word/Excel/PDF/PowerPoint files have been successfully fixed. More details are listed below.
Here is a list of changes made in this release
Spire.Doc for Java
| Category | ID | Description |
| New Feature | SPIREDOC-10293 | Supports saving charts as templates.
Document doc = new Document();
doc.loadFromFile(inputFile);
int count = 1;
for (Section sec : (Iterable) doc.getSections()) {
for (Paragraph paragraph : (Iterable) sec.getParagraphs()) {
for (int i = 0; i < paragraph.getChildObjects().getCount(); i++) {
DocumentObject obj = paragraph.getChildObjects().get(i);
if (obj instanceof ShapeObject) {
ShapeObject shape = (ShapeObject) obj;
Chart chart = shape.getChart();
String fileName = outputFile + count + ".crtx";
chart.saveAsTemplate(fileName);
count++;
}
}
}
}
|
| New Feature | SPIREDOC-10828 | Adds the XValues property to retrieve data XValues on the chart's X-axis, and the YValues property to retrieve data values on the Y-axis for a specified series.
Document doc = new Document();
doc.loadFromFile(inputFile);
StringBuilder sb = new StringBuilder();
int pageNumber = 1;
for (Section sec : (Iterable) doc.getSections()) {
for (Paragraph paragraph : (Iterable) sec.getParagraphs()) {
for (int i = 0; i < paragraph.getChildObjects().getCount(); i++) {
DocumentObject obj = paragraph.getChildObjects().get(i);
if (obj instanceof ShapeObject) {
ShapeObject shape = (ShapeObject) obj;
Chart chart = shape.getChart();
sb.append("\r\n\r\nPage " + pageNumber + ":\r\n" + "All X-axis data: ");
for(int x = 0; x < chart.getXValues().getCount(); x++){
// Print all X-axis data values
ChartValue xVal = chart.getXValues().get(x);
sb.append(xVal.getStringValue() + " ");
}
ChartSeries series = chart.getSeries().get(0);
sb.append("\r\nY-axis data: ");
// Print all Y-axis data values of the first series
for(ChartValue yVal : (Iterable<ChartValue>)series.getYValues()){
sb.append(yVal.getValue() + " ");
}
}
}
}
pageNumber++;
}
|
| New Feature | SPIREDOC-11457 | Supports getting and setting the position of chart data labels.
Document doc = new Document();
for (ChartDataLabelPosition position : ChartDataLabelPosition.values()) {
Section section = doc.addSection();
section.addParagraph().appendText(position.name());
Paragraph newPara = section.addParagraph();
ShapeObject shape = newPara.appendChart(ChartType.Pie, 500, 300);
Chart chart = shape.getChart();
chart.getSeries().get(0).hasDataLabels(true);
chart.getSeries().get(0).getDataLabels().setShowCategoryName(true);
chart.getSeries().get(0).getDataLabels().setShowValue(true);
chart.getSeries().get(0).getDataLabels().setPosition(position);
ShapeObject shape2 = newPara.appendChart(ChartType.Bubble, 500, 300);
Chart chart2 = shape2.getChart();
chart2.getSeries().get(0).hasDataLabels(true);
chart2.getSeries().get(0).getDataLabels().setShowCategoryName(true);
chart2.getSeries().get(0).getDataLabels().setShowValue(true);
chart2.getSeries().get(0).getDataLabels().setPosition(position);
}
doc.saveToFile(outputFile, FileFormat.Docx);
|
| Bug Fix | SPIREDOC-11879 | Fixed the issue where a "NoClassDefFoundError" exception was thrown when adding HTML via appendHTML. |
| Bug Fix | SPIREDOC-11796 | Fixes the issue where some image sizes were not automatically scaled when converting HTML to Word. |
| Bug Fix | SPIREDOC-11885 | Fixes the "NullPointerException" exception that occurred when converting Word to PDF. |
| Bug Fix | SPIREDOC-11770 | Fixes the "There are too many styles in the document" exception that occurred when converting Word to PDF. |
| Bug Fix | SPIREDOC-11826 | Fixes the issue where tables and images were lost when converting Markdown to Word. |
| Bug Fix | SPIREDOC-11836 | Fixes the issue where field updating failed when converting Word to PDF. |
| Bug Fix | SPIREDOC-11868 | Fixes the "NullPointerException" exception that occurred when populating control content. |
| Bug Fix | SPIREDOC-11876 | Fixes the "NullPointerException" exception that occurred when reading document data in a multi-threaded environment. |
Spire.XLS for Java
| Category | ID | Description |
| Bug Fix | SPIREXLS-6123 | Fixed the issue where extra pages were generated when converting Excel to PDF. |
Spire.PDF for Java
| Category | ID | Description |
| Optimization | SPIREPDF-7657 | Optimized memory consumption when merging PDF documents. |
| Bug Fix | SPIREPDF-7843 | Fixed an issue where replacing text incorrectly caused other text to be lost. |
| Bug Fix | SPIREPDF-8008 | Fixed an issue where content became misaligned after text replacement. |
| Bug Fix | SPIREPDF-8019 | Fixed an issue where converting PDF to OFD without a license threw a "Specified argument was out of the range of valid values." exception. |
Spire.Presentation for Java
| Category | ID | Description |
| Bug Fix | SPIREPPT-3095 | Fixed the issue where OLE object data was lost after adding OLE object to PowerPoint documents. |
Spire.OCR for Java
| Category | ID | Description |
| Bug Fix | SPIREOCR-120 | Fixed an issue where license recognition failed when the provided license path started with a "\" character. |
Spire.Doc for Java 14.4.9 supports saving charts as templates
We're pleased to announce the release of Spire.Doc for Java 14.4.9. This version supports saving charts as templates, and provides the XValues and YValues properties to retrieve data values from charts. Additionally, it supports getting and setting the position of chart data labels. Meanwhile, some issues that occurred when converting Word to PDF, HTML to Word, and Markdown to Word 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-10293 | Supports saving charts as templates.
Document doc = new Document();
doc.loadFromFile(inputFile);
int count = 1;
for (Section sec : (Iterable) doc.getSections()) {
for (Paragraph paragraph : (Iterable) sec.getParagraphs()) {
for (int i = 0; i < paragraph.getChildObjects().getCount(); i++) {
DocumentObject obj = paragraph.getChildObjects().get(i);
if (obj instanceof ShapeObject) {
ShapeObject shape = (ShapeObject) obj;
Chart chart = shape.getChart();
String fileName = outputFile + count + ".crtx";
chart.saveAsTemplate(fileName);
count++;
}
}
}
}
|
| New Feature | SPIREDOC-10828 | Adds the XValues property to retrieve data XValues on the chart's X-axis, and the YValues property to retrieve data values on the Y-axis for a specified series.
Document doc = new Document();
doc.loadFromFile(inputFile);
StringBuilder sb = new StringBuilder();
int pageNumber = 1;
for (Section sec : (Iterable) doc.getSections()) {
for (Paragraph paragraph : (Iterable) sec.getParagraphs()) {
for (int i = 0; i < paragraph.getChildObjects().getCount(); i++) {
DocumentObject obj = paragraph.getChildObjects().get(i);
if (obj instanceof ShapeObject) {
ShapeObject shape = (ShapeObject) obj;
Chart chart = shape.getChart();
sb.append("\r\n\r\nPage " + pageNumber + ":\r\n" + "All X-axis data: ");
for(int x = 0; x < chart.getXValues().getCount(); x++){
// Print all X-axis data values
ChartValue xVal = chart.getXValues().get(x);
sb.append(xVal.getStringValue() + " ");
}
ChartSeries series = chart.getSeries().get(0);
sb.append("\r\nY-axis data: ");
// Print all Y-axis data values of the first series
for(ChartValue yVal : (Iterable<ChartValue>)series.getYValues()){
sb.append(yVal.getValue() + " ");
}
}
}
}
pageNumber++;
}
|
| New Feature | SPIREDOC-11457 | Supports getting and setting the position of chart data labels.
Document doc = new Document();
for (ChartDataLabelPosition position : ChartDataLabelPosition.values()) {
Section section = doc.addSection();
section.addParagraph().appendText(position.name());
Paragraph newPara = section.addParagraph();
ShapeObject shape = newPara.appendChart(ChartType.Pie, 500, 300);
Chart chart = shape.getChart();
chart.getSeries().get(0).hasDataLabels(true);
chart.getSeries().get(0).getDataLabels().setShowCategoryName(true);
chart.getSeries().get(0).getDataLabels().setShowValue(true);
chart.getSeries().get(0).getDataLabels().setPosition(position);
ShapeObject shape2 = newPara.appendChart(ChartType.Bubble, 500, 300);
Chart chart2 = shape2.getChart();
chart2.getSeries().get(0).hasDataLabels(true);
chart2.getSeries().get(0).getDataLabels().setShowCategoryName(true);
chart2.getSeries().get(0).getDataLabels().setShowValue(true);
chart2.getSeries().get(0).getDataLabels().setPosition(position);
}
doc.saveToFile(outputFile, FileFormat.Docx);
|
| Bug Fix | SPIREDOC-11796 | Fixes the issue where some image sizes were not automatically scaled when converting HTML to Word. |
| Bug Fix | SPIREDOC-11885 | Fixes the "NullPointerException" exception that occurred when converting Word to PDF. |
| Bug Fix | SPIREDOC-11770 | Fixes the "There are too many styles in the document" exception that occurred when converting Word to PDF. |
| Bug Fix | SPIREDOC-11826 | Fixes the issue where tables and images were lost when converting Markdown to Word. |
| Bug Fix | SPIREDOC-11836 | Fixes the issue where field updating failed when converting Word to PDF. |
| Bug Fix | SPIREDOC-11868 | Fixes the "NullPointerException" exception that occurred when populating control content. |
| Bug Fix | SPIREDOC-11876 | Fixes the "NullPointerException" exception that occurred when reading document data in a multi-threaded environment. |
Spire.XLS 16.4.2 enhances stability of PDF and SVG conversion
We are pleased to announce the release of Spire.XLS 16.4.2. This version enhances the stability of PDF and SVG conversion, ensuring more consistent export results. Meanwhile, it also fixes a critical issue where the text wrapping style did not apply correctly in pivot table cells. Please refer to the details below for more information.
Here is a list of changes made in this release
| Category | ID | Description |
| Adjustment | SPIREXLS-6127 | Corrected the spelling of the SortComparsionType enum to SortComparisonType. |
| Bug Fix | SPIREXLS-6095 | Fixed an issue where the text wrapping style did not apply to pivot table cells. |
| Bug Fix | SPIREXLS-6117 | Fixed an issue where an ArgumentOutOfRangeException was thrown when loading Excel documents. |
| Bug Fix | SPIREXLS-6126 | Fixed an issue where formatting was incorrect when converting Excel to PDF or SVG. |
Spire.Presentation for Java 11.4.1 fixes OLE object data loss issue in PowerPoint documents
We are pleased to announce the release of Spire.Presentation for Java 11.4.1. This version mainly fixes the issue where OLE object data was lost after adding OLE object to PowerPoint documents. Details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| Bug Fix | SPIREPPT-3095 | Fixed the issue where OLE object data was lost after adding OLE object to PowerPoint documents. |
Spire.XLS for Java 16.4.1 enhances the conversion from Excel to PDF
We’re pleased to announce the release of Spire.XLS for Java 16.4.1. This update enhances the Excel-to-PDF feature by resolving an issue that caused extra pages to be generated during conversion.
Here is a list of changes made in this release
| Category | ID | Description |
| Bug Fix | SPIREXLS-6123 | Fixed the issue where extra pages were generated when converting Excel to PDF. |
Spire.PDF for Python 12.4.1 adds a color parameter overload to the ReplaceText interface
We're pleased to announce the release of Spire.PDF for Python 12.4.1. This version mainly adds a color parameter overload to the ReplaceText interface. Details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| New Feature | SPIREPDF-7907 | Added a color parameter overload to the ReplaceText interface.
textReplacer.ReplaceText("Text", "Replace", Color.get_Blue())
|