Spire.Office 11.5.0 is released
We’re pleased to announce the release of Spire.Office 11.5.0. In this version, Spire.Doc enhances Word to PDF conversion. Spire.XLS enhances the conversion from Excel to EMF. Spire.Presentation adds support for saving PPTX to video. Spire.PDF adds support for SHA-2 and SHA-256 digital signature algorithms. 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.5.14
- Spire.Pdf.dll v12.5.8
- Spire.XLS.dll v16.5.6
- Spire.Presentation.dll v11.5.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.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 |
| Bug Fix | SPIREDOC-10767 | Fixed an issue where a “NullReferenceException” was thrown when using FixedLayoutPage.Section. |
| Bug Fix | SPIREDOC-10826 | Fixed an issue where a “NullReferenceException” was thrown when using FixedLayoutDocument.GetLayoutEntitiesOfNode(). |
| Bug Fix | SPIREDOC-11425 | Fixed an issue with incorrect font effects when converting Word to PDF. |
| Bug Fix | SPIREDOC-11845 | Fixed an issue with incorrect value retrieval for IF fields. |
| Bug Fix | SPIREDOC-11855 | Fixed an issue with inconsistent table layout when converting Word to PDF. |
| Bug Fix | SPIREDOC-11858 | Fixed an issue where an “Arg_NullReferenceException” was thrown when converting Word to PDF. |
| Bug Fix | SPIREDOC-11859 | Fixed an issue where a “System.InvalidOperationException” was thrown when removing fields and saving Word to PDF. |
| Bug Fix | SPIREDOC-11897 | Fixed an issue where loading Word documents failed with “Value cannot be null. Arg_ParamName_Name”. |
| Bug Fix | SPIREDOC-11898 | Fixed an issue with inconsistent pagination when converting Word to PDF. |
| Bug Fix | SPIREDOC-11902 | Fixed an issue where a “NullReferenceException” was thrown when replacing bookmarks. |
| Bug Fix | SPIREDOC-11942 | Fixed an issue where incorrect pages were extracted using ExtractPages(0,1). |
Spre.XLS
| Category | ID | Description |
| Bug Fix | SPIREXLS-6129 | Fixed the issue where a "GDI+" exception was thrown when converting Excel files to EMF format. |
| Bug Fix | SPIREXLS-6130 | Fixed the issue where read formula values returned incorrect results. |
| Bug Fix | SPIREXLS-6136 | Fixed the issue where formula values were calculated incorrectly. |
Spire.Presentation
| 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
| 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. |
| Bug Fix | SPIREPDF-8027 | Fixes the issue where the program threw an "Index was outside the bounds of the array" exception during PDF to image conversion. |
| Bug Fix | SPIREPDF-8032 | Fixes the issue where characters were duplicated when extracting text from PDF pages. |
Spire.OfficeJS 11.5.7 starts to support Linux Arm64 environment
We’re pleased to announce the release of Spire.OfficeJS 11.5.7. This update adds a new Linux (Arm64) deployment package, providing broader platform compatibility for modern server environments. In addition, Spire.OfficeJS now supports mobile document opening and collaborative editing through the "coAuthorUrl" configuration. These enhancements further improve the flexibility and usability of Spire.OfficeJS for online office applications. More details are as follows.
Here is a list of changes made in this release
| Category | ID | Description |
| New Feature | - | Added "Spire.OfficeJS for Linux (Arm64)" package to support Linux Arm64 environment. |
| New Feature | - | Added "Open Document" functionality under the "File" menu in the editor. |
| New Feature | - | Added support for Japanese displaying language, which can be enabled by setting "viewLanguage": "ja". |
| New Feature | - | Added support for opening documents on mobile devices. |
| New Feature | - | Added support for collaboration features by configuring "coAuthorUrl".
"serverless":
{ "useServerless": true, "baseUrl": "http://127.0.0.1:3000", "coAuthorUrl": "http://127.0.0.1:8000" }
|
Spire.Office for Java 11.5.0 is released
We are excited to announce the release of Spire.Office for Java 11.5.0. In this version, Spire.PDF for Java adds support for PDF conversion progress callback; Spire.Doc for Java adds support for footnote/endnote counting and font embedding option; Spire. Presentation for Java adds support for compressing images. Besides, many issues have been successfully fixed in this version. 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-11693 | Added support for retrieving the number of footnotes or endnotes.
Document doc = new Document();
doc.loadFromFile(inputFile);
StringBuilder sb = new StringBuilder();
for (int n = 0; n < doc.getSections().getCount(); n++) {
Section s = doc.getSections().get(n);
for (int i = 0; i < s.getParagraphs().getCount(); i++) {
Paragraph para = s.getParagraphs().get(i);
for (int j = 0, cnt = para.getChildObjects().getCount(); j < cnt; j++) {
ParagraphBase pBase = (ParagraphBase) para.getChildObjects().get(j);
if (pBase instanceof Footnote) {
Footnote fn = (Footnote) pBase;
if (fn.getFootnoteType() == FootnoteType.Footnote) {
StringBuilder fnText = new StringBuilder();
for (int k = 0; k < fn.getTextBody().getParagraphs().getCount(); k++) {
fnText.append(fn.getTextBody().getParagraphs().get(k).getText());
}
sb.append("Footnote:"+ fnText.toString() + "\nFootnoteID:" + fn.getId() + "\n");
}
if (fn.getFootnoteType() == FootnoteType.Endnote) {
StringBuilder enText = new StringBuilder();
for (int k = 0; k < fn.getTextBody().getParagraphs().getCount(); k++) {
enText.append(fn.getTextBody().getParagraphs().get(k).getText());
}
sb.append("Endnote:"+ enText.toString() + "\nEndnoteID:" + fn.getId() + "\n");
}
}
}
}
}
|
| New Feature | SPIREDOC-11878 | Added support for the “Embed only characters used in the document” setting.
doc.setEmbedFontsInFile(true); doc.setSaveSubsetFonts(true); |
| Bug Fix | SPIREDOC-11829 | Fixed an issue with inconsistent formatting when converting Word to PDF. |
| Bug Fix | SPIREDOC-11899 | Fixed an issue with blurry images when converting Word to PDF. |
Spire.PDF for Java
| Category | ID | Description |
| New Feature | SPIREPDF-8044 | Added support for progress callback when converting PDF documents.
class CustomProgressNotifier implements IProgressNotifier {
StringBuilder str = new StringBuilder();
private String outputFile;
public CustomProgressNotifier(String outputFile) {
this.outputFile = outputFile;
}
@Override
public void notify(float progress) {
str.append("==============Progress: ").append(progress).append("%==============\n");
try {
Files.writeString(Paths.get(outputFile), str.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
//using
PdfDocument pdf=new PdfDocument();
pdf.loadFromFile("test.pdf");
pdf.registerProgressNotifier(new CustomProgressNotifier("Progress.txt"));
pdf.saveToFile("out.docx", FileFormat.DOCX);
pdf.dispose();
|
| Bug Fix | SPIREPDF-7642 | Fixed issue with content inconsistency when converting SVG to PDF. |
| Bug Fix | SPIREPDF-7683 | Fixed issue with incorrect validation results of digital signatures. |
Spire.Presentation for Java
| Category | ID | Description |
| New Feature | SPIREPPT-3082 | Added support for compressing images.
Presentation presentation = new Presentation();
presentation.loadFromFile(inputFile);
SlideCollection slides = presentation.getSlides();
for (int i = 0; i < slides.getCount(); i++) {
ISlide slide = slides.get(i);
ShapeCollection shapes = slide.getShapes();
for (int j = 0; j < shapes.getCount(); j++) {
IShape shape = shapes.get(j);
if (shape instanceof SlidePicture) {
SlidePicture slidepicture = (SlidePicture) shape;
// The smaller the value, the greater the compression
boolean result = slidepicture.getPictureFill().getCompressImage( true, 50f);
}
}
}
|
| Bug Fix | SPIREPPT-3093 | Fixed the issue where the background color was incorrect when converting PowerPoint to PDF. |
Spire.Doc 14.5.14 enhances Word to PDF conversion
We’re pleased to announce the release of Spire.Doc 14.5.14. This version enhances Word to PDF conversion and fixes several issues, including layout inconsistencies, font rendering problems, and multiple exceptions occurring during document processing. More details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| Bug Fix | SPIREDOC-10767 | Fixed an issue where a “NullReferenceException” was thrown when using FixedLayoutPage.Section. |
| Bug Fix | SPIREDOC-10826 | Fixed an issue where a “NullReferenceException” was thrown when using FixedLayoutDocument.GetLayoutEntitiesOfNode(). |
| Bug Fix | SPIREDOC-11425 | Fixed an issue with incorrect font effects when converting Word to PDF. |
| Bug Fix | SPIREDOC-11845 | Fixed an issue with incorrect value retrieval for IF fields. |
| Bug Fix | SPIREDOC-11855 | Fixed an issue with inconsistent table layout when converting Word to PDF. |
| Bug Fix | SPIREDOC-11858 | Fixed an issue where an “Arg_NullReferenceException” was thrown when converting Word to PDF. |
| Bug Fix | SPIREDOC-11859 | Fixed an issue where a “System.InvalidOperationException” was thrown when removing fields and saving Word to PDF. |
| Bug Fix | SPIREDOC-11897 | Fixed an issue where loading Word documents failed with “Value cannot be null. Arg_ParamName_Name”. |
| Bug Fix | SPIREDOC-11898 | Fixed an issue with inconsistent pagination when converting Word to PDF. |
| Bug Fix | SPIREDOC-11902 | Fixed an issue where a “NullReferenceException” was thrown when replacing bookmarks. |
| Bug Fix | SPIREDOC-11942 | Fixed an issue where incorrect pages were extracted using ExtractPages(0,1). |
Spire. Presentation for Java 11.5.1 supports compressing images
We are pleased to announce the release of Spire.Presentation for Java 11.5.1. This version adds a new feature to compress images and also fixes an issue while converting PowerPoint to PDF. Details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| New Feature | SPIREPPT-3082 | Added support for compressing images.
Presentation presentation = new Presentation();
presentation.loadFromFile(inputFile);
SlideCollection slides = presentation.getSlides();
for (int i = 0; i < slides.getCount(); i++) {
ISlide slide = slides.get(i);
ShapeCollection shapes = slide.getShapes();
for (int j = 0; j < shapes.getCount(); j++) {
IShape shape = shapes.get(j);
if (shape instanceof SlidePicture) {
SlidePicture slidepicture = (SlidePicture) shape;
// The smaller the value, the greater the compression
boolean result = slidepicture.getPictureFill().getCompressImage( true, 50f);
}
}
}
|
| Bug Fix | SPIREPPT-3093 | Fixed the issue where the background color was incorrect when converting PowerPoint to PDF. |
Spire.Doc for Java 14.5.3 supports footnote/endnote counting and font embedding option
We’re pleased to announce the release of Spire.Doc for Java 14.5.3. This version adds support for retrieving the number of footnotes or endnotes, as well as the “Embed only characters used in the document” setting. It also fixes several issues related to Word-to-PDF conversion, including inconsistent formatting and blurry images. More details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| New Feature | SPIREDOC-11693 | Added support for retrieving the number of footnotes or endnotes.
Document doc = new Document();
doc.loadFromFile(inputFile);
StringBuilder sb = new StringBuilder();
for (int n = 0; n < doc.getSections().getCount(); n++) {
Section s = doc.getSections().get(n);
for (int i = 0; i < s.getParagraphs().getCount(); i++) {
Paragraph para = s.getParagraphs().get(i);
for (int j = 0, cnt = para.getChildObjects().getCount(); j < cnt; j++) {
ParagraphBase pBase = (ParagraphBase) para.getChildObjects().get(j);
if (pBase instanceof Footnote) {
Footnote fn = (Footnote) pBase;
if (fn.getFootnoteType() == FootnoteType.Footnote) {
StringBuilder fnText = new StringBuilder();
for (int k = 0; k < fn.getTextBody().getParagraphs().getCount(); k++) {
fnText.append(fn.getTextBody().getParagraphs().get(k).getText());
}
sb.append("Footnote:"+ fnText.toString() + "\nFootnoteID:" + fn.getId() + "\n");
}
if (fn.getFootnoteType() == FootnoteType.Endnote) {
StringBuilder enText = new StringBuilder();
for (int k = 0; k < fn.getTextBody().getParagraphs().getCount(); k++) {
enText.append(fn.getTextBody().getParagraphs().get(k).getText());
}
sb.append("Endnote:"+ enText.toString() + "\nEndnoteID:" + fn.getId() + "\n");
}
}
}
}
}
|
| New Feature | SPIREDOC-11878 | Added support for the “Embed only characters used in the document” setting.
doc.setEmbedFontsInFile(true); doc.setSaveSubsetFonts(true); |
| Bug Fix | SPIREDOC-11829 | Fixed an issue with inconsistent formatting when converting Word to PDF. |
| Bug Fix | SPIREDOC-11899 | Fixed an issue with blurry images when converting Word to PDF. |
Spire.PDF 12.5.8 optimizes the conversion from PDF to image
We're pleased to announce the release of Spire.PDF 12.5.8. This version optimizes the conversion from PDF to image. Meanwhile, some issues that occurred when extracting text from PDF pages 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 | SPIREPDF-8027 | Fixes the issue where the program threw an "Index was outside the bounds of the array" exception during PDF to image conversion. |
| Bug Fix | SPIREPDF-8032 | Fixes the issue where characters were duplicated when extracting text from PDF pages. |
Spire.Office for Python 11.5.0 is released
We are excited to announce the release of Spire.Office for Python 11.5.0. This version introduces several powerful enhancements: Spire.Doc can now convert Word documents to Excel, Spire.PDF allows specifying text color when replacing content, Spire.XLS enables seamless conversion between Markdown and Excel, and Spire.OCR integrates with AI models to improve accuracy and enhance text recognition in images. In addition, all core components (except Spire.OCR) now offer universal support for macOS ARM.
Alongside these new features, numerous known issues related to converting, processing, and saving Word, Excel, PDF, and PowerPoint files have been resolved, delivering a more stable and reliable experience. More details are provided below.
Here is a list of changes made in this release
Spire.Doc for Python
| Category | ID | Description |
| Optimization | - | Chart namespace updated:
// Old import (deprecated): from spire.doc.charts import ChartType // New import (use this): from spire.doc.charts.ChartType import ChartType |
| New Feature | - | The Bookmark class now includes FirstColumn and LastColumn properties to retrieve the starting and ending column indices of a bookmark within a table.
doc = Document() doc.LoadFromFile(inputFile) firstColumn = doc.Bookmarks["t_insert"].FirstColumn lastColumn = doc.Bookmarks["t_insert"].LastColumn |
| New Feature | - | The TableFormat class now supports Style, StyleOptions, and StyleName properties for managing table styles.
doc = Document()
tableStyle = doc.Styles.Add(StyleType.TableStyle, "TestTableStyle3")
tableStyle.LeftIndent = 55
tableStyle.Borders.Color = Color.get_Green()
tableStyle.HorizontalAlignment = RowAlignment.Right
tableStyle.Borders.BorderType = BorderStyle.Single
section = doc.AddSection()
table = section.AddTable()
table.ResetCells(3, 3)
table.Rows[0].Cells[0].AddParagraph().AppendText("Aligned according to left indent")
table.PreferredWidth = PreferredWidth.FromPoints(300)
table.Format.StyleName = "TestTableStyle3"
style = doc.Styles.FindByName("TestTableStyle3")
if (style is not None) and isinstance(style, TableStyle):
tableStyle = style
tableStyle.Borders.Color = Color.get_Black()
tableStyle.Borders.BorderType = BorderStyle.Double
tableStyle.RowStripe = 3
tableStyle.ConditionalStyles[TableConditionalStyleType.OddRowStripe].Shading.BackgroundPatternColor = Color.get_LightBlue()
tableStyle.ConditionalStyles[TableConditionalStyleType.EvenRowStripe].Shading.BackgroundPatternColor = Color.get_LightCyan()
tableStyle.ColumnStripe = 1
tableStyle.ConditionalStyles[TableConditionalStyleType.EvenColumnStripe].Shading.BackgroundPatternColor = Color.get_LightPink()
table.ApplyStyle(tableStyle)
table.Format.StyleOptions = table.Format.StyleOptions | TableStyleOptions.ColumnStripe
doc.SaveToFile(outputFile, FileFormat.Docx)
|
| New Feature | - | The Style class now includes a RemoveSelf method to remove the style from the document.
style = doc.Styles.FindByName("TestTableStyle3")
style.RemoveSelf()
|
| New Feature | - | Enhanced the Document class with features including page extraction (ExtractPages), first-section access (FirstSection), and support for hyphenation dictionary registration/unregistration (RegisterHyphenationDictionary, UnregisterHyphenationDictionary, IsHyphenationDictionaryRegistered). |
| New Feature | SPIREDOC-10777 | Added support for macOS on ARM architecture. |
| New Feature | SPIREDOC-10770 | Added support for converting MHTML to PDF.
document = Document() document.LoadFromFile(“input.mhtml”) document.SaveToFile(“output.pdf”, FileFormat.PDF) document.Close() |
| New Feature | SPIREDOC-11793 | Added support for exporting Word mathematical formulas as standard MathML to ensure correct rendering in HTML.
HtmlExportOptions options = doc.HtmlExportOptions; options.OfficeMathOutputMode = HtmlOfficeMathOutputMode.MathML; |
| New Feature | SPIREDOC-11872 | Added support for converting Word to Excel.
document = Document() document.LoadFromFile(“input.docx”) document.SaveToFile(“output.xlsx”, FileFormat.XLSX) document.Close() |
| Bug Fix | SPIREDOC-11668 | Fixed an issue where enabling track changes and replacing text produced incorrect results. |
| Bug Fix | SPIREDOC-11594 | Fixed an issue where retrieving document properties in a Python v3.14 environment caused a “NotImplementedError” exception. |
| Bug Fix | SPIREDOC-11602 | Fixed an issue where setting CharacterFormat.FontSize on macOS caused a “RuntimeError: ffi_prep_cif_var failed” exception. |
| Bug Fix | SPIREDOC-11701 | Fixed an issue where the program threw an exception when adding a series to a chart. |
| Bug Fix | SPIREDOC-11832 | Fixed an issue where adding a digital signature failed when converting Word to PDF. |
Spire.XLS for Python
| Category | ID | Description |
| New feature | SPIREXLS-5183 | Added support for macOS on ARM architecture. |
| New Feature | SPIREXLS-6094 | Supports hiding the Pivot Table Field List.
workbook.HidePivotFieldList = true; |
| New Feature | SPIREXLS-6097 | Supports converting Excel to Markdown.
workbook = Workbook() workbook.LoadFromFile(inputFile) markdownOptions = MarkdownOptions() markdownOptions.SavePicInRelativePath = False markdownOptions.SaveHyperlinkAsRef = False workbook.SaveToMarkdown(outputFile, markdownOptions) workbook.Dispose() |
| New Feature | SPIREXLS-6098 | Supports converting Markdown to Excel.
workbook = Workbook()
workbook.LoadFromFile(inputFile)
wb.SaveToFile("out.xlsx", ExcelVersion.Version2010);
|
| 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. |
| Bug Fix | SPIREXLS-5986 | Fixed an issue where setting the Value2 property of a cell caused an exception. |
| Bug Fix | SPIREXLS-6089 | Fixed an issue where running the package on Python 3.14.2 threw a `NotImplementedError: There is currently no support for "str |
| Bug Fix | SPIREXLS-6091 | Fixed an issue where setting the ShowValuesRow property of a Pivot Table to False did not take effect. |
| Bug Fix | SPIREXLS-6116 | Fixed an issue where specifying a large data source range when creating a Pivot Table caused an exception. |
| 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.Presentation for Python
| Category | ID | Description |
| New feature | SPIREPPT-3037 | Added support for macOS on ARM architecture. |
| Bug Fix | SPIREPPT-2859 SPIREPPT-3052 |
Fixed the issue where "ffi_prep_cif_var failed" error was thrown when using Python V12+ on macOS. |
| Bug Fix | SPIREPPT-3028 | Fixed the issue where incorrect SVG effects occurred when importing using AddFromSVGAsShapes. |
| Bug Fix | SPIREPPT-3046 SPIREPPT-3053 |
Fixed the issue where inconsistent chart content was found when converting PPTX to PDF. |
| Bug Fix | SPIREPPT-3054 | Fixed the issue where charts were missing when converting PPTX to PDF. |
| Bug Fix | SPIREPPT-3037 | Fixed the issue of content loss when converting PPT to images. |
| Bug Fix | SPIREPPT-3080 | Fixed an issue where the program would hang when converting PowerPoint documents to images. |
Spire.PDF for Python
| Category | ID | Description |
| New feature | SPIREPDF-7000 SPIREPDF-7698 | Added support for customizing signature appearance via the PdfCustomAppearance class.
class MyPdfCustomAppearance(IPdfSignatureAppearance):
def __init__(self):
pass
def Generate(self, g: PdfCanvas):
x = 0.0
y = 0.0
fontSize = 10.0
font = PdfTrueTypeFont("SimSun", fontSize, PdfFontStyle.Regular, True)
lineHeight = fontSize
image = PdfImage.FromFile(inputImage)
g.DrawImage(image, x, y)
x = float(image.Width)
g.DrawString("Signer: Gary", font, PdfBrushes.get_Red(), PointF(x, y))
y += lineHeight + 5
g.DrawString("Phone: +86 12345678", font, PdfBrushes.get_Black(), PointF(x, y))
y += lineHeight + 5
g.DrawString("Address: Sichuan Province, China", font, PdfBrushes.get_Black(), PointF(x, y))
doc = PdfDocument()
doc.LoadFromFile(inputFile)
signatureMaker = PdfOrdinarySignatureMaker(doc, inputFile_pfx, "e-iceblue")
my_appearance = MyPdfCustomAppearance()
customAppearance = PdfCustomAppearance(my_appearance)
signatureMaker.MakeSignature("Signer", doc.Pages.get_Item(0), 90.0, 550.0, 270.0, 640.0, customAppearance)
doc.SaveToFile(outputFile)
|
| New feature | SPIREPDF-7053 | Added support for retrieving font style information of extracted text.
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(inputFile);
// Define a rectangle
RectangleF rctg = new RectangleF(0, 0, 200, 300);
var page = doc.Pages[0];
PdfTextFinder finder = new PdfTextFinder(page);
finder.Options.Parameter = TextFindParameter.None;
finder.Options.Area = rctg;
// Find text within the rectangle
List<PdfTextFragment> findouts = finder.FindAllText();
StringBuilder sb = new StringBuilder();
foreach (PdfTextFragment find in findouts)
{
sb.AppendLine(find.Text);
sb.AppendLine(find.TextStates[0].FontName);
sb.AppendLine(find.TextStates[0].FontSize.ToString("F2"));
}
File.WriteAllText(outputFile, sb.ToString());
|
| New Feature | SPIREPDF-7558 | Completed compatibility support for Mac M-series chips (ARM64 architecture) |
| New Feature | SPIREPDF-7907 | Added a color parameter overload to the ReplaceText interface.
textReplacer.ReplaceText("Text", "Replace", Color.get_Blue())
|
| Bug Fix | SPIREPDF-6659 | Fixed an issue where text replacement produced incorrect results. |
| Bug Fix | SPIREPDF-7483 | Fixed an issue that the “ffi_prep_cif_var failed” error occurred when running certain Python features on macOS. |
| Bug Fix | SPIREPDF-7819 SPIREPDF-7821 SPIREPDF-7822 | Fixed an issue where content copied from a PDF/A-2B compliant document (converted from PDF) was incorrect. |
| Bug Fix | SPIREPDF-7864 | Fixed an issue where setting a color during text replacement did not take effect as expected. |
Spire.Barcode for Python
| Category | ID | Description |
| New feature | - | Added support for macOS on ARM architecture. |
Spire.OCR for Python
| Category | ID | Description |
| New Feature | - | Added support for integration of AI models into Spire.OCR. (Note: Users need to obtain an API Key from the AI platform on their own.)
def _run_ai_test(self):
filename = "1.png"
output_file = "scan.txt"
file_path = r"F:\3.3.0AI\AI\ocr.xml"
model = "AIModel"
api_key = "ApiKey"
api_url = "ApiUrl"
self._update_ocr_config(file_path, model, api_key, api_url)
self._scan_img(filename, output_file)
def _scan_img(self, filename, output_file):
scanner = OcrScanner()
configure_options = ConfigureOptions()
configure_options.ModelPath = r"F:\3.3.0AI\AI"
configure_options.Language = "Japanese"
scanner.ConfigureDependencies(configure_options)
scanner.Scan(filename)
text = scanner.Text.ToString()
with open(output_file, "w", encoding="utf-8") as f:
f.write(text)
def _update_ocr_config(self, file_path, model, api_key, api_url):
tree = ET.parse(file_path)
root = tree.getroot()
model_node = root.find('./configs/model')
api_key_node = root.find('./configs/apiKey')
api_url_node = root.find('./configs/apiUrl')
if model_node is not None:
model_node.text = model
if api_key_node is not None:
api_key_node.text = api_key
if api_url_node is not None:
api_url_node.text = api_url
tree.write(file_path, encoding='utf-8', xml_declaration=True)
print("XML updated successfully!")
|
Spire.PDF for Java 12.5.1 adds support for PDF conversion progress callback
We're pleased to announce the release of Spire.PDF for Java 12.5.1. This version adds support for progress callback when converting PDF. It also fixes several issues, including content inconsistency when converting SVG to PDF. More details are listed below.
Here is a list of changes made in this release
| Category | ID | Description |
| New Feature | SPIREPDF-8044 | Added support for progress callback when converting PDF documents.
class CustomProgressNotifier implements IProgressNotifier {
StringBuilder str = new StringBuilder();
private String outputFile;
public CustomProgressNotifier(String outputFile) {
this.outputFile = outputFile;
}
@Override
public void notify(float progress) {
str.append("==============Progress: ").append(progress).append("%==============\n");
try {
Files.writeString(Paths.get(outputFile), str.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
//using
PdfDocument pdf=new PdfDocument();
pdf.loadFromFile("test.pdf");
pdf.registerProgressNotifier(new CustomProgressNotifier("Progress.txt"));
pdf.saveToFile("out.docx", FileFormat.DOCX);
pdf.dispose();
|
| Bug Fix | SPIREPDF-7642 | Fixed issue with content inconsistency when converting SVG to PDF. |
| Bug Fix | SPIREPDF-7683 | Fixed issue with incorrect validation results of digital signatures. |
Spire.XLS 16.5.6 enhances the conversion from Excel to EMF
We're pleased to announce the release of Spire.XLS 16.5.6. This version enhances the conversion from Excel to EMF, and also fixes two issues that occurred when reading and calculating formulas. More details are shown below.
Here is a list of changes made in this release
| Category | ID | Description |
| Bug Fix | SPIREXLS-6129 | Fixed the issue where a "GDI+" exception was thrown when converting Excel files to EMF format. |
| Bug Fix | SPIREXLS-6130 | Fixed the issue where read formula values returned incorrect results. |
| Bug Fix | SPIREXLS-6136 | Fixed the issue where formula values were calculated incorrectly. |