Spire.PDF 10.10.5 现已正式发布。该版本支持在使用 Chrome 插件转换 HTML 到 PDF 时输出日志,同时还支持创建 PdfAttachmentAnnotation 并添加作者。此外,一些在转换、操作 PDF 文件时出现的问题也已成功被修复。详情请查阅以下内容。
新功能:
ChromeHtmlConverter converter = new ChromeHtmlConverter(TestUtil.ChromiumPath);
//生成日志文件
converter.Logger = new Logger(logFilePath);
//启用IsEnabled 在控制台输出日志
//Logger.IsEnabled = true;
ConvertOptions options = new ConvertOptions();annotation.Title = "test";问题修复:
强调 Excel 工作簿中的关键数据对于快速的数据分析至关重要。对关键数据进行高亮显示,不仅能立即引导注意力到最重要的信息,还能帮助识别趋势、异常和关键指标。通过 Python 处理 Excel 工作簿,用户可以自动化数据的查找和突出显示功能,提高效率并确保精确性。本文将探讨如何使用 Spire.XLS for Python 库,在 Excel 工作表中查找并突出显示数据。
此教程需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.XLS
如果您不确定如何安装,请参考: 如何在 Windows 中安装 Spire.XLS for Python
借助 Spire.XLS for Python,开发者可以通过 Worksheet.FindAllString(stringValue: str, formula: bool, formulaValue: bool) 方法查找所有包含特定字符串的单元格,并将其作为列表返回。之后,可以遍历这些找到的单元格,并通过设置 CellRange.Style.Color 属性为其应用高亮颜色。
在 Excel 工作表中查找并高亮显示数据的具体步骤如下:
from spire.xls import *
# 创建一个 Workbook 实例
workbook = Workbook()
# 加载 Excel 文件
workbook.LoadFromFile("Sample.xlsx")
# 获取第一个工作表
sheet = workbook.Worksheets.get_Item(0)
# 查找需要高亮的数据
cellRanges = sheet.FindAllString("雨", False, True)
# 遍历找到的区域
for cellRange in cellRanges:
# 高亮数据
cellRange.Style.Color = Color.get_LightYellow()
# 保存工作簿
workbook.SaveToFile("output/查找并强调工作表数据.xlsx")
workbook.Dispose()

除了在整个工作表中搜索数据外,我们还可以使用 CellRange.FindAllString(stringValue: str, formula: bool, formulaValue: bool) 方法在指定的单元格范围内查找并高亮显示数据。具体步骤如下:
from spire.xls import *
# 创建一个 Workbook 实例
workbook = Workbook()
# 加载 Excel 文件
workbook.LoadFromFile("Sample.xlsx")
# 获取第一个工作表
sheet = workbook.Worksheets.get_Item(0)
# 获取单元格范围
findRange = sheet.Range["B2:E8"]
# 查找需要高亮的数据
cellRanges = findRange.FindAllString("雨", False, True)
# 遍历找到的区域
for cellRange in cellRanges:
# 高亮数据
cellRange.Style.Color = Color.get_LightYellow()
# 保存工作簿
workbook.SaveToFile("output/查找并强调单元格范围数据.xlsx")
workbook.Dispose()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Presentation for Java 9.10.2 现已正式发布,最新版本支持了 FindFirstTextAsRange 方法,用于查找第一个出现的文本。另外,一些已知问题也在此次更新中被成功修复,例如加载 PPTX 文档程序抛出异常 NullPointerException 的问题。更多详情请阅读下面的内容。
新功能:
Presentation ppt = new Presentation();
ppt.loadFromFile(inputFile);
String text = "create, read";
PortionEx textRange=ppt.getSlides().get(0).FindFirstTextAsRange(text);
textRange.getFill().setFillType(FillFormatType.SOLID);
textRange.getFill().getSolidColor().setColor(Color.red);
textRange.setFontHeight(28);
textRange.setLatinFont(new TextFont("微软雅黑"));
textRange.isBold(TriState.TRUE);
textRange.isItalic(TriState.TRUE);
textRange.setTextUnderlineType(TextUnderlineType.DOUBLE);
textRange.setTextStrikethroughType(TextStrikethroughType.SINGLE);
ppt.saveToFile(outputFile, FileFormat.PPTX_2016);
ppt.dispose();问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-JAVA.html
Word 文档中的宏是使用 Visual Basic for Applications(VBA)语言创建的小程序,旨在自动执行重复性任务或添加高级功能。虽然宏可以大幅提升工作效率,但如果被恶意利用,也可能带来安全隐患。因此,当处理来自不可信来源的文件时,及时检测并删除潜在有害的宏尤为重要。本文将介绍如何使用 Spire.Doc for Python 检测并删除 Word 文档中的 VBA 宏。
本教程需要 Spire.Doc for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Doc
如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.Doc for Python
Spire.Doc for Python 提供了 Document.IsContainMacro 属性,用于检查 Word 文档是否包含 VBA 宏。该属性返回一个布尔值:True 表示文档包含一个或多个 VBA 宏,False 则表示文档中没有宏。
以下是使用 Spire.Doc for Python 检测 Word 文档是否包含 VBA 宏的详细步骤:
from spire.doc import *
from spire.doc.common import *
# 初始化 Document 类的实例
document = Document()
# 加载 Word 文档
document.LoadFromFile("测试.docm")
# 检测文档是否包含 VBA 宏
if document.IsContainMacro:
print("该文档包含VBA宏。")
else:
print("该文档不包含任何VBA宏。")
document.Close()

开发人员可以使用 Document.ClearMacros() 方法一次性删除 Word 文档中的所有宏。具体步骤如下:
from spire.doc import *
from spire.doc.common import *
# 初始化 Document 类的实例
document = Document()
# 加载 Word 文档
document.LoadFromFile("测试.docm")
# 删除文档中的所有 VBA 宏
document.ClearMacros()
# 将修改后的文档保存为 docm 文件
document.SaveToFile("删除宏.docm", FileFormat.Docm2016)
document.Close()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Doc for Java 12.10.3 已发布。本次更新增强了 Markdown 到 Word 的转换功能。此外,该版本还修复了更新目录域不正确的问题。详情请阅读以下内容。
问题修复:
提取并再利用 PowerPoint 演示文稿中的各种元素,是跨平台内容共享演示文稿内容的重要方式之一。通过将幻灯片中的形状(包括文本框、图形、图片、表格等)转换为独立的图像文件,用户可以将这些形状无缝嵌入到文档、网页或设计项目中,同时保留其原有的格式和视觉效果。而借助 Python,用户可以灵活高效地实现这一过程。本文将介绍如何使用 Spire.Presentation for Python,通过 Python 代码将 PowerPoint 演示文稿中的形状保存为图像文件。
本教程需要用到 Spire.Presentation for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Presentation
如果您不确定如何安装,请参考:如何在 Windows 中安装 Spire.Presentation for Python
Spire.Presentation for Python 提供了 Slide.Shapes.SaveAsImage(shapIndex: int, dpiX: int, dpiY: int) 方法来将演示文稿中的形状保存为指定 DPI(可选)的图像。使用此方法,开发者可以选择保存特定形状或整个 PowerPoint 演示文稿中的所有形状为图像文件。具体步骤如下:
from spire.presentation import *
# 创建一个 Presentation 实例
presentation = Presentation()
# 加载一个 PowerPoint 文件
presentation.LoadFromFile("示例.pptx")
# 获取第四张幻灯片(索引从0开始)
slide = presentation.Slides.get_Item(4)
# 将形状保存为图片流
for i in range(slide.Shapes.Count):
# 保存当前形状为指定大小的图片流
imageStream = slide.Shapes.SaveAsImage(i, 256, 256)
# 保存图片到文件
imageStream.Save(f"output/Shapes/ShapeToImage{i}.png")
# 释放资源
presentation.Dispose()

借助 Spire.Presentation for Python 提供的方法,开发者可以将幻灯片中的图片保存为图像文件,同时保留其编辑和格式。这需要先检查形状是否是 SlidePicture 类的对象,如果是,则使用 Slide.Shapes.SaveAsImage() 方法将其保存为图像。具体步骤如下:
from spire.presentation import *
# 创建一个 Presentation 实例
presentation = Presentation()
# 加载一个 PowerPoint 文件
presentation.LoadFromFile("示例.pptx")
# 获取第五张幻灯片(索引从0开始)
slide = presentation.Slides.get_Item(1)
# 遍历幻灯片中的所有形状
i = 0
for shape in slide.Shapes:
# 检查形状是否是 SlidePicture 类型的对象
if isinstance(shape, SlidePicture):
# 保存形状为图片流
shape = shape if isinstance(shape, SlidePicture) else None
image = slide.Shapes.SaveAsImage(slide.Shapes.IndexOf(shape), 256, 256)
# 保存图片到文件
image.Save(f"output/Images/ImageShape{i}.png")
i += 1
# 释放资源
presentation.Dispose()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
使用 Python 来操作 PDF 文本的格式,是提高文档处理效率的有效方法。借助 Spire.PDF for Python 库,开发者可以通过其文本查找功能精确定位文本,轻松获取其格式信息,并对文本的颜色、大小和字体等格式进行修改。这种方式特别适合需要在大量 PDF 文档中统一调整特定文本的格式的场景,不仅节省操作的时间,还能确保格式的一致性。
本文将演示如何使用 Spire.PDF for Python,通过 Python 代码获取并修改 PDF 文档中文本的格式。
本教程需要用到 Spire.PDF for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.PDF
如果您不确定如何安装,请参考:如何在 Windows 中安装 Spire.PDF for Python
开发者可以使用 Spire.PDF for Python 提供的 PdfTextFinder 和 PdfTextFindOptions 类,在 PDF 文档中精确搜索指定文本,并获取代表搜索结果的 PdfTextFragment 对象集合。然后,开发者可以通过 PdfTextFragment.TextStates[] 属性下的一些属性,访问指定搜索结果文本的格式信息,如字体名称 (FontName)、字体大小 (FontSize) 和字体族 (FontFamily)。
查找 PDF 中的文本并获取其字体信息的详细步骤如下:
from spire.pdf import *
# 创建一个 PdfDocument 实例
pdf = PdfDocument()
# 加载一个PDF文件
pdf.LoadFromFile("示例.pdf")
# 获取第一页
page = pdf.Pages.get_Item(0)
# 创建一个 PdfTextFinder 实例
finder = PdfTextFinder(page)
# 创建一个 PdfTextFindOptions 实例并设置搜索选项
options = PdfTextFindOptions()
options.CaseSensitive = True # 设置为区分大小写
options.WholeWords = True # 设置为全词匹配
# 应用这些选项
finder.Options = options
# 查找指定文本
fragments = finder.Find("云服务器的概念与工作原理")
# 获取第一个片段的格式
formatting = fragments[0].TextStates
# 获取格式信息
fontInfo = ""
fontInfo += "文本: " + fragments[0].Text
fontInfo += "\n字体: " + formatting[0].FontName
fontInfo += "\n字体大小: " + str(formatting[0].FontSize)
fontInfo += "\n字体族: " + formatting[0].FontFamily
# 输出字体信息
print(fontInfo)
# 释放资源
pdf.Dispose()

在 PDF 文档中找到指定文本后,开发者还可以在相同的位置上覆盖一个与背景颜色相同的矩形,然后以新的格式重绘文本,从而实现对纯色背景页面上的简单 PDF 文本片段的格式进行修改。具体步骤如下:
from spire.pdf import *
# 创建一个 PdfDocument 实例
pdf = PdfDocument()
# 从指定路径加载一个PDF文件
pdf.LoadFromFile("示例.pdf")
# 获取第一页
page = pdf.Pages.get_Item(0)
# 创建一个 PdfTextFinder 实例
finder = PdfTextFinder(page)
# 创建一个 PdfTextFindOptions 实例并设置搜索选项
options = PdfTextFindOptions()
options.CaseSensitive = True # 设置为区分大小写
options.WholeWords = True # 设置为全词匹配
finder.Options = options
# 查找指定文本
text = "云服务器的概念与工作原理"
fragments = finder.Find(text)
# 获取第一个结果
fragment = fragments[0]
# 获取页面背景颜色,如果其为空,则将其改为白色
backColor = page.BackgroundColor
if backColor.ToArgb() == 0:
backColor = Color.get_White()
# 使用背景色绘制矩形以覆盖原有文本
for i in range(len(fragment.Bounds)):
page.Canvas.DrawRectangle(PdfSolidBrush(PdfRGBColor(backColor)), fragment.Bounds[i])
# 创建新的字体和画刷
font = PdfTrueTypeFont("微软雅黑", 13.0, PdfFontStyle.Italic, True)
brush = PdfBrushes.get_Brown()
# 创建一个 PdfStringFormat 实例,并设置对齐方式
stringFormat = PdfStringFormat()
stringFormat.Alignment = PdfTextAlignment.Left # 左对齐
# 计算包含文本的矩形区域
point = fragment.Bounds[0].Location # 文本框起始位置
size = SizeF(fragment.Bounds[-1].Right, fragment.Bounds[-1].Bottom) # 文本框大小
rect = RectangleF(point, size) # 定义文本框矩形
# 在同一矩形区域内用指定格式绘制新文本
page.Canvas.DrawString(text, font, brush, rect, stringFormat)
# 保存文档到输出文件
pdf.SaveToFile("output/查找修改PDF文本格式.pdf")
# 释放资源
pdf.Close()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Doc 12.10.5 现已发布。 该版本新增了方法用于跟踪文档元素的添加、删除以及文本内容的更改,并且还支持修改修订作者。此外,一些在转换 Word 转 PDF、HTML 和加载 Word 文档时出现的问题也已成功被修复。详情请查看以下内容。
新功能:
public void StartTrackRevisions(string author);
public void StartTrackRevisions(string author, DateTime dateTime);
public void StopTrackRevisions();range.InsertRevision.Author = "e-iceblue";问题修复:
导入和导出 PDF 表单数据的功能让用户能够与外部文件(如 FDF、XFDF 和 XML)实现无缝表单信息交换。导入功能可以快速将外部数据填充至 PDF 表单,导出功能则能将 PDF 表单中的数据提取并保存为外部文件。这项功能简化了数据处理,特别适合需要处理大量表单数据或将其集成到其他系统的场景。本文将介绍如何使用 Spire.PDF for .NET 和 C# 实现从 FDF、XFDF 或 XML 文件中导入 PDF 表单数据,以及将 PDF 表单数据导出为 FDF、XFDF 或 XML 文件。
首先,您需要添加 Spire.PDF for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.PDF
Spire.PDF for .NET 提供了 PdfFormWidget.ImportData() 方法用于从 FDF、XFDF 或 XML 文件中导入 PDF 表单数据。详细步骤如下:
using Spire.Pdf;
using Spire.Pdf.Widget;
namespace ImportPdfFormData
{
internal class Program
{
static void Main(string[] args)
{
// 创建 PdfDocument 类的对象
PdfDocument document = new PdfDocument();
// 加载 PDF 文档
document.LoadFromFile("表单.pdf");
// 获取 PDF 文档的表单
PdfFormWidget loadedForm = document.Form as PdfFormWidget;
// 从 XML 文件导入 PDF 表单数据
loadedForm.ImportData("数据.xml", DataFormat.Xml);
// 从 FDF 文件导入 PDF 表单数据
// loadedForm.ImportData("数据.fdf", DataFormat.Fdf);
// 从 XFDF 文件导入 PDF 表单数据
// loadedForm.ImportData("数据.xfdf", DataFormat.XFdf);
// 保存结果文档
document.SaveToFile("输出.pdf");
// 关闭 PdfDocument 对象
document.Close();
}
}
}

Spire.PDF for .NET 还提供了 PdfFormWidget.ExportData() 方法,支持将 PDF 表单数据导出为 FDF、XFDF 或 XML 文件。详细步骤如下:
using Spire.Pdf;
using Spire.Pdf.Widget;
namespace ExportPdfFormData
{
internal class Program
{
static void Main(string[] args)
{
// 创建 PdfDocument 类的对象
PdfDocument document = new PdfDocument();
// 加载 PDF 文档
document.LoadFromFile("表单.pdf");
// 获取 PDF 文档的表单
PdfFormWidget loadedForm = document.Form as PdfFormWidget;
// 导出 PDF 表单数据为 XML 文件
loadedForm.ExportData("数据.xml", DataFormat.Xml, "表单");
// 导出 PDF 表单数据为 FDF 文件
// loadedForm.ExportData("数据.fdf", DataFormat.Fdf, "Form");
// 导出 PDF 表单数据为 XFDF 文件
// loadedForm.ExportData("数据.xfdf", DataFormat.XFdf, "Form");
// 关闭 PdfDocument 对象
document.Close();
}
}
}

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.PDF 10.10.0 现已正式发布。最新版本支持在转换 PDF 到 Markdown 时忽略图片。同时,一些已知问题也此次更新中被成功修复,例如转换 PDF 文档到 PDF/A 文档时,打开结果文档报错的问题。更多详情请查阅以下内容。
新功能:
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();问题修复: