Spire.Office 9.10.0 已发布。在该版本中,Spire.PDF 支持在转换 PDF 到 Markdown 时忽略图片以及在使用 Chrome 插件转换 HTML 到 PDF 时输出日志;Spire.Doc 新增方法用于跟踪文档元素的添加、删除以及文本内容的更改;Spire.XLS 支持 ARRAYTOTEXT、ARABIC、BASE、COMBINA 和 XOR 公式。此外,该版本还成功修复了大量已知问题。详情请阅读以下内容。
版本信息如下:
- Spire.Doc.dll v12.10.13
- Spire.Pdf.dll v10.10.5
- Spire.XLS.dll v14.10.2
- Spire.Presentation.dll v9.10.2
- Spire.Barcode.dll v7.3.3
- Spire.Email.dll v6.6.0
- Spire.DocViewer.Forms.dll v8.8.2
- Spire.PdfViewer.Asp.dll v7.12.23
- Spire.PdfViewer.Forms.dll v7.12.23
- Spire.Spreadsheet.dll v7.5.2
- Spire.OfficeViewer.Forms.dll v8.7.15
- Spire.DataExport.dll 4.9.0
- Spire.DataExport.ResourceMgr.dll v2.1.0
https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html
Spire.PDF
新功能:
- 支持转换 PDF 到 Markdown 时忽略图片。
- 扩展了 PdfMDPSignatureMaker 类,支持传递 IPdfSignatureFormatter 对象。
- 支持使用 PdfOrdinarySignatureMaker 类或 PdfMDPSignatureMaker 类对文档已有的签名域进行签名。
- 新增 Logger 类支持在使用 Chrome 插件转换 HTML 到 PDF 时输出日志。
- 支持创建 PdfAttachmentAnnotation 并添加作者。
PdfToMarkdownConverter converter = new PdfToMarkdownConverter(inputFile); converter.MarkdownOptions.IgnoreImage = true;
converter.ConvertToMarkdown(outputFile);
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);
pdf.SaveToFile(outputFile, FileFormat.PDF);
pdf.Dispose();
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(inputFile);
PdfFormWidget widgets = pdf.Form as PdfFormWidget;
for (int i = 0; i < widgets.FieldsWidget.List.Count; i++)
{
PdfFieldWidget widget = widgets.FieldsWidget.List[i] as PdfFieldWidget;
if (widget is PdfSignatureFieldWidget)
{
string originalName = widget.Name;
X509Certificate2 cert = new X509Certificate2(inputFile_pfx, "e-iceblue");
IPdfSignatureFormatter formatter = new PdfPKCS7Formatter(cert, false);
// PdfMDPSignatureMaker signatureMaker = new PdfMDPSignatureMaker(pdf, formatter);
PdfOrdinarySignatureMaker signatureMaker = new PdfOrdinarySignatureMaker(pdf, formatter);
PdfSignature signature = signatureMaker.Signature;
signature.Name = "E-iceblue";
signature.ContactInfo = "028-81705109";
signature.Location = "chengdu";
signature.Reason = "document";
PdfSignatureAppearance appearance = new PdfSignatureAppearance(signature);
appearance.NameLabel = "Signer: ";
appearance.ContactInfoLabel = "ContactInfo: ";
appearance.LocationLabel = "Loaction: ";
appearance.ReasonLabel = "Reason: ";
appearance.SignatureImage = PdfImage.FromFile(inputFile_Img);
appearance.GraphicMode = GraphicMode.SignImageAndSignDetail;
signatureMaker.MakeSignature(originalName, appearance);
}
}
pdf.SaveToFile(outputFile);
pdf.Dispose();
ChromeHtmlConverter converter = new ChromeHtmlConverter(TestUtil.ChromiumPath);
//生成日志文件
converter.Logger = new Logger(logFilePath);
//启用IsEnabled 在控制台输出日志
//Logger.IsEnabled = true;
ConvertOptions options = new ConvertOptions();
annotation.Title = "test";
问题修复:
- 修复了转换 PDF 文档到 PDF/A 文档,打开结果文档报错的问题。
- 修复了转换 PDF 文档到 PPTX 文档,程序抛 System.IndexOutOfRangeException: "Index was outside the bounds of the array." 异常的问题。
- 修复了转换 PDF 文档到图片,速度下降的问题。
- 修复了验证签名有效性,第一个签名有效性始终返回 false 的问题。
- 修复了转换 OFD 文档到 PDF 文档,程序抛 "Object reference not set to an instance of an object" 异常的问题。
- 修复了转换 OFD 文档到 PDF 文档,程序抛 "错误的文字对象的粗细值:681" 异常的问题。
- 修复了转换 OFD 文档到 PDF 文档,内容丢失的问题。
- 修复了压缩 PDF 文档,程序抛 "Object reference not set to an instance of an object" 异常的问题。
- 修复了转换 PDF 文档到 ToPdfA3B 文档,不应用授权程序时程序抛 "NullReferenceException" 异常的问题。
- 修复了转换 PDF 文档到 PdfX1A2001 文档,字体加粗不正确的问题。
- 修复了获取垂直文本的 Bounds 不正确的问题。
- 修复了转换 PDF 文档到 LinearizedPdf 文档,程序抛 "NullReferenceException" 异常的问题。
- 修复了多线程提取 PDF 页面文本,程序抛 "已添加了具有相同键的项" 异常的问题。
- 修复了多线程调用 SetPdfToHtmlOptions 方法,程序抛 "DivideByZeroException" 异常的问题。
- 修复了转换 OFD 文档到 PDF 文档再保存到 XPS,效果不正确的问题。
- 修复了读取 PDF 文档中的字体,程序挂起的问题。
Spire.Doc
新功能:
- 新增方法用于跟踪文档元素的添加、删除以及文本内容的更改。
- 支持修改修订作者。
public void StartTrackRevisions(string author);
public void StartTrackRevisions(string author, DateTime dateTime);
public void StopTrackRevisions();
range.InsertRevision.Author = "e-iceblue";
问题修复:
- 修复了转换 Word 到 PDF,表格内容丢失的问题。
- 修复了转换 Word 到 HTML,程序抛 "ArgumentException" 异常的问题。
- 修复了转换 Word 到 PDF,内容空白的问题。
- 修复了加载 Word 文档,程序抛 "Cannot insert an object of type Paragraph into the Document" 异常的问题。
- 修复了替换书签中的段落文本后,段落缩进丢失的问题。
- 修复了转换 Word 到 PDF,程序挂起的问题。
- 修复了转换 Word 到 PDF后,页面部分内容丢失的问题。
Spire.XLS
新功能:
- MarkerDesigner 支持应用过滤值参数。
- 支持 ARRAYTOTEXT 公式。
- 支持 ARABIC 公式。
- 支持 BASE 公式。
- 支持 COMBINA 公式。
- 支持 XOR 公式。
- 支持嵌入图片到单元格。
- 支持判断单元格是否存在 NamedRange 以及支持获取单元格的 NamedRange。
Workbook workbook = new Workbook();
workbook.Worksheets[0].Range["A1"].Text = "True";
workbook.Worksheets[0].Range["A2"].Text = "1234.01234";
workbook.Worksheets[0].Range["A3"].Text = "你好";
workbook.Worksheets[0].Range["B1"].Text = "#VALUE!";
workbook.Worksheets[0].Range["B2"].Text = "Seattle";
workbook.Worksheets[0].Range["B3"].Text = "$1,123.00";
workbook.Worksheets[0].Range["D1"].FormulaArray = "=ARRAYTOTEXT(A1:B4,0)";
workbook.Worksheets[0].Range["D3"].FormulaArray = "=ARRAYTOTEXT(A1:B4,1)";
workbook.SaveToFile(outputFile, ExcelVersion.Version2013);
Workbook workbook = new Workbook();
workbook.Worksheets[0].Range["A1"].Value2 = "mcmxii";
workbook.Worksheets[0].Range["C1"].Formula = "=ARABIC(A1)";
workbook.Worksheets[0].Range["C2"].Formula = "=ARABIC(\"LVII\")";
workbook.Worksheets[0].Range["C3"].Formula = "=ARABIC(\"mcmxii\")";
workbook.Worksheets[0].Range["C4"].Formula = "=ARABIC(\"\")";
workbook.Worksheets[0].Range["C5"].Formula = "=ARABIC(\"-LVII\")";
workbook.Worksheets[0].Range["C6"].Formula = "=ARABIC(\"57\")";
workbook.Worksheets[0].Range["C7"].Formula = "=ARABIC(\"2024/10/15\")";
workbook.Worksheets[0].Range["C8"].Formula = "=ARABIC(\"文本\")";
Workbook workbook = new Workbook();
workbook.Worksheets[0].Range["A1"].Value2 = 7;
workbook.Worksheets[0].Range["C1"].Formula = "=BASE(A1,2)";
workbook.Worksheets[0].Range["C2"].Formula = "=BASE(7,2)";
workbook.Worksheets[0].Range["C3"].Formula = "=BASE(100,16))";
workbook.Worksheets[0].Range["C4"].Formula = "=BASE(15,2,10)";
workbook.Worksheets[0].Range["C5"].Formula = "=BASE(文本,16))";
workbook.Worksheets[0].Range["C6"].Formula = "=BASE(-7,2)";
Workbook workbook = new Workbook();
workbook.Worksheets[0].Range["A1"].Value2 = 4;
workbook.Worksheets[0].Range["C1"].Formula = "=COMBINA(A1,3)";
workbook.Worksheets[0].Range["C2"].Formula = "=COMBINA(4,3)";
workbook.Worksheets[0].Range["C3"].Formula = "=COMBINA(10,3)";
workbook.Worksheets[0].Range["C4"].Formula = "=COMBINA(3,10)";
workbook.Worksheets[0].Range["C5"].Formula = "=COMBINA(文本,16))";
Workbook workbook = new Workbook();
workbook.Worksheets[0].Range["A1"].Value2 = 3;
workbook.Worksheets[0].Range["A2"].Value2 = 0;
workbook.Worksheets[0].Range["C1"].Formula = "=XOR(A1>A2)";
workbook.Worksheets[0].Range["C2"].Formula = "=XOR(2>9)";
workbook.Worksheets[0].Range["C3"].Formula = "=XOR(3>0,2<9)";
workbook.Worksheets[0].Range["C4"].Formula = "=XOR(3>12,2<9)";
workbook.Worksheets[0].Range["C5"].Formula = "=XOR(3>12,2<9,4>6)";
workbook.Worksheets[0].Range["A6"].Value2 = 3>0;
workbook.Worksheets[0].Range["C6"].Formula = "=XOR(A6)";
worksheet.Range["B1"].InsertOrUpdateCellImage("D:\\vs1.png",true);
Workbook workbook = new Workbook();
workbook.LoadFromFile(inputFile);
var result = workbook.Worksheets[0].Range["A1"].GetNamedRange();
System.Console.WriteLine(result);
var result1 = workbook.Worksheets[0].Range["A2"].GetNamedRange();
System.Console.WriteLine(result1);
File.WriteAllText(outputFile_T, result.ToString()+ "\r\n");
File.AppendAllText(outputFile_T, result1.ToString()+ "\r\n");
var result2 = workbook.Worksheets[0].Range["A3"].GetNamedRange();
if (result2 == null)
{
System.Console.WriteLine("null");
File.AppendAllText(outputFile_T, "null");
}
问题修复:
- 修复了获取页面数量不正确的问题。
- 修复了在 NET6 框架导出数据的小数点不正确的问题。
- 修复了转换 Excel 到 PDF 后,嵌入到单元格的图片丢失的问题。
- 修复了转换 Excel 到 PDF,程序抛 "Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')" 异常的问题。
- 修复了获取公式的计算结果不正确的问题。
- 修复了转换 Excel 到 PDF 程序抛异常的问题。
- 修复了插入公式到单元格多出 "@" 字符以及公式值不正确的问题。
- 修复删除迷你图失败的问题。
- 修复了给透视表添加过滤器失败的问题。