Spire.Presentation 6.12.4已发布。该版本支持添加设置以转换高质量图像,支持获取幻灯片背景的类型和颜色,并且包含.NET6.0。另外该版本还增强了PPT到PDF,PPT到图片的转换功能,修复了获取的表格单元格文本显示颜色不正确等已知问题。详情请阅读以下内容。
新功能:
ISlide sld = ppt.Slides[0] as ISlide;
FillFormat bg = sld.DisplaySlideBackground.GetBackgroundFillFormat(sld as ActiveSlide);
switch (bg.FillType)
{
case FillFormatType.Solid:
sb.AppendLine("type:" + bg.FillType + "\tcolor:" + bg.SolidColor.Color);
break;
case FillFormatType.Gradient:
sb.AppendLine("type:" + bg.FillType);
foreach (GradientStop stop in bg.Gradient.GradientStops)
{
sb.AppendLine("position:" + stop.Position + "\tcolor:" + stop.Color.Color);
}
break;
default:
sb.AppendLine("type:" + bg.FillType);
break;
}
Presentation.HighQualityImage = true;
问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-NET.html
图片水印通常是出现在数字文档背景上的图标或记号,表明内容的版权所有者。添加图片水印可以防止您的数据被重复使用或修改。本文演示了如何使用 Spire.PDF for .NET 在 C# 和 VB.NET 中为 PDF 添加图片水印。
首先,您需要添加 Spire.PDF for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.PDF以下是为 PDF 文档添加图片水印的主要步骤。
using Spire.Pdf;
using System.Drawing;
namespace AddImageWatermark
{
class Program
{
static void Main(string[] args)
{
//创建一个PdfDocument对象
PdfDocument document = new PdfDocument();
//加载示例PDF文档
document.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");
//加载图片
Image image = Image.FromFile(@"C:\Users\Administrator\Desktop\logo.png");
//获取图片宽度和高度
int imgWidth = image.Width;
int imgHeight = image.Height;
//遍历页面
for (int i = 0; i < document.Pages.Count; i++)
{
//获取页面宽度和高度
float pageWidth = document.Pages[i].ActualSize.Width;
float pageHeight = document.Pages[i].ActualSize.Height;
//设置背景不透明度
document.Pages[i].BackgroudOpacity = 0.3f;
//设置当前页面的背景图片
document.Pages[i].BackgroundImage = image;
//将背景图片置于页面中央
Rectangle rect = new Rectangle((int)(pageWidth - imgWidth) / 2, (int)(pageHeight - imgHeight) / 2, imgWidth, imgHeight);
document.Pages[i].BackgroundRegion = rect;
}
//保存文档
document.SaveToFile("AddImageWatermark.pdf");
document.Close();
}
}
}Imports Spire.Pdf
Imports System.Drawing
Namespace AddImageWatermark
Class Program
Shared Sub Main(ByVal args() As String)
'创建一个PdfDocument对象
Dim document As PdfDocument = New PdfDocument()
'加载示例PDF文档
document.LoadFromFile(" C:\Users\Administrator\Desktop\sample.pdf")
'加载图片
Dim image As Image = Image.FromFile("C:\Users\Administrator\Desktop\logo.png")
'获取图片宽度和高度
Dim imgWidth As Integer = image.Width
Dim imgHeight As Integer = image.Height
'遍历页面
Dim i As Integer
For i = 0 To document.Pages.Count - 1 Step i + 1
'获取页面宽度和高度
Dim pageWidth As Single = document.Pages(i).ActualSize.Width
Dim pageHeight As Single = document.Pages(i).ActualSize.Height
'设置背景不透明度
document.Pages(i).BackgroudOpacity = 0.3F
'设置当前页面的背景图片
document.Pages(i).BackgroundImage = image
'将背景图片置于页面中央
Dim rect As Rectangle = New Rectangle(CInt((pageWidth - imgWidth) / 2), CInt((pageHeight - imgHeight) / 2), imgWidth, imgHeight)
document.Pages(i).BackgroundRegion = rect
Next
'保存文档
document.SaveToFile("AddImageWatermark.pdf")
document.Close()
End Sub
End Class
End Namespace
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。
Spire.Office for Java 4.12.2已发布。该版本带来了一些新功能,比如:Spire.Doc for Java支持转换Word到OFD格式,支持设置修订作者,支持在进行比较时设置“忽略格式”;Spire.PDF for Java支持转换PDF为线性PDF,并且支持转换PDF到Excel单元格文本不换行的功能;Spire.Presentation for Java支持添加数学公式和检测shape是否包含数学公式;Spire.XLS for Java支持将excel转换为OFD,并且支持“分类汇总”功能。此外还修复了其它一些已知问题,详情请阅读以下内容。
获取Spire.Office for Java 4.12.2请点击:https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html
新功能:
Document document = new Document();
document.loadFromFile("input.docx");
document.saveToFile("output.ofd", FileFormat.OFD);
Document doc = new Document();
doc.loadFromFile(inputFile);
doc.setTrackChanges(true);
TextRange range = doc.getLastParagraph().appendText("123413");
range.getInsertRevision().setAuthor("user");
doc.saveToFile(outputFile);
doc.dispose();
Document.compare(Document document, String author, CompareOptions options);
Document.compare(Document document, String author, Date date, CompareOptions options);
CompareOptions.setIgnoreFormatting(true);
问题修复:
新功能:
PdfToLinearizedPdfConverter converter = new PdfToLinearizedPdfConverter(inputPath);
converter.toLinearizedPdf(OutputPath);
//第四个参数控制着是否让文本换行
doc.getConvertOptions().setPdfToXlsxOptions(new XlsxLineLayoutOptions(false, false, false, false));
问题修复:
新功能:
Presentation ppt = new Presentation();
ppt.loadFromFile("input.pptx");
String latexMathCode = "x^{2}+\\sqrt{x^{2}+1}=2";
IAutoShape shape = ppt.getSlides().get(0).getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle2D.Float(30, 100, 400, 30));
shape.getTextFrame().getParagraphs().clear();
//Add math equation
ParagraphEx tp = shape.getTextFrame().getParagraphs().addParagraphFromLatexMathCode(latexMathCode);for (int i = 0; i<ppt.getSlides().get(0).getShapes().getCount(); i++)
{
//Check whether shape contains math equations
boolean containMathEquation = ((IAutoShape)ppt.getSlides().get(0).getShapes().get(i)).isContainMathEquation();
}
ppt.saveToFile("output.pptx", FileFormat.PPTX_2013);
ppt.dispose();
问题修复:
新功能:
Workbook workbook = new Workbook();
workbook.loadFromFile("input.xlsx");
workbook.saveToFile("output.ofd", FileFormat.OFD);
Workbook workbook = new Workbook();
workbook.loadFromFile(inputFile);
Worksheet sheet = workbook.getWorksheets().get(0);
//选择数据范围
CellRange range = sheet.getRange().get("A1:B18");
//选择的分类汇总
sheet.subtotal(range, 0, new int[] { 1 }, SubtotalTypes.Sum, true, false, true);
//保存文档
workbook.saveToFile(outputFile, ExcelVersion.Version2010);
workbook.dispose();
问题修复:
Spire.XLS for Java 4.12.2已发布。该版本支持将excel转换为OFD,并且支持“分类汇总”功能。该版本还增强了Excel到PDF,Excel到图片的转换功能。此外,还修复了合并单元格后“Wrap text”不生效等一些已知问题。详情请阅读以下内容。
新功能:
Workbook workbook = new Workbook();
workbook.loadFromFile("input.xlsx");
workbook.saveToFile("output.ofd", FileFormat.OFD);
Workbook workbook = new Workbook();
workbook.loadFromFile(inputFile);
Worksheet sheet = workbook.getWorksheets().get(0);
//选择数据范围
CellRange range = sheet.getRange().get("A1:B18");
//选择的分类汇总
sheet.subtotal(range, 0, new int[] { 1 }, SubtotalTypes.Sum, true, false, true);
//保存文档
workbook.saveToFile(outputFile, ExcelVersion.Version2010);
workbook.dispose();
问题修复:
Spire.Doc for Java 支持将 Office(Word/Excel/PowerPoint)、PDF、txt 等文件作为 OLE 对象插入到 Word 文档,双击该对象可直接访问或编辑嵌入的对象文件。除了以上常见的文件格式对象以外,也支持插入多媒体文件,如视频、音频等,本文将对此作详细介绍。
首先,您需要在 Java 程序中添加 Spire.Doc.jar 文件作为依赖项。JAR 文件可以从此链接下载。如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc</artifactId>
<version>14.9.5</version>
</dependency>
</dependencies>
代码中嵌入多媒体文件的方法是通过调用 appendOleObject(InputStream oleStream, DocPicture olePicture, String fileExtension) 方法来实现,该方法中的三个参数解释分别为:
主要代码步骤解析:
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.ParagraphStyle;
import com.spire.doc.fields.DocPicture;
import java.awt.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class EmbedMediaFile {
public static void main(String[] args)throws IOException {
//实例化Document类的对象,并添加Section
Document doc = new Document();
Section section = doc.addSection();
//定义段落样式
ParagraphStyle style1 = new ParagraphStyle(doc);
style1.setName("Style");
style1.getCharacterFormat().setFontName("Calibri");
style1.getCharacterFormat().setFontSize(18);
style1.getCharacterFormat().setBold(true);
style1.getCharacterFormat().setTextColor(new Color(123,104,238));
doc.getStyles().add(style1);
//添加段落1,嵌入视频文件
Paragraph para1 = section.addParagraph();
para1.appendText("嵌入视频文件:");
para1.applyStyle(style1.getName());
InputStream stream1 = new FileInputStream("Video.mp4");
DocPicture pic1 = new DocPicture(doc);
pic1.loadImage("https://cdn.e-iceblue.cn/logo1.png");
para1.appendOleObject(stream1, pic1, "mp4");
//添加一个空白段落2
Paragraph para2 = section.addParagraph();
//添加段落3,嵌入音频文件
Paragraph para3 = section.addParagraph();
para3.appendText("嵌入音频文件:");
para3.applyStyle(style1.getName());
InputStream stream2 = new FileInputStream("Audio.mp3");
DocPicture pic2 = new DocPicture(doc);
pic2.loadImage("https://cdn.e-iceblue.cn/logo2.png");
para3.appendOleObject(stream2, pic2, "mp3");
//保存文档
doc.saveToFile("Result.docx", FileFormat.Docx_2013);
}
}嵌入后的文档效果:

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。
Spire.Doc 9.12.7已发布。该版本增强了Word到PDF以及HTML到Word的转换功能,另外还修复了更新文档字段后页码不正确的问题。详情请阅读以下内容。
问题修复:
Spire.XLS 11.12.2已发布。该版本支持设置 IPrstGeomShape 的边框,并增强了Excel到PDF的转换功能。另外还修复了在图表中添加椭圆形状后效果不正确等一些已知问题。详情请阅读以下内容。
新功能:
IPrstGeomShape triangle = sheet.PrstGeomShapes.AddPrstGeomShape(2, 2, 100, 100, PrstGeomShapeType.Triangle);
triangle.Line.ForeColor = Color.Green;
问题修复:

无论是学术论文、商业报告还是法律文书,通常都对字数有着严格的要求。准确统计这些数据,不仅是为了满足格式规范,更是确保文档质量达标的关键。本文将详细介绍如何利用 Spire.Doc for Java 库,通过简单高效的代码,准确统计 Word 文档中的字数,帮助你在自动化文档处理流程中实现可靠的字数校验。
Spire.Doc for Java 是一款专为 Java 开发者设计的专业 Word 文档处理控件。它不依赖 Microsoft Word,即可在 Java 应用程序中实现对 Word 文档的高效操作。
要开始在项目中使用 Spire.Doc for Java,最简单的方法是通过 Maven 进行管理。你只需在项目的 pom.xml 文件中添加以下配置即可:
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc</artifactId>
<version>14.9.5</version>
</dependency>
</dependencies>
你还可以选择下载 Spire.Doc for Java,解压后进行手动安装。
在完成 Spire.Doc 的库安装后,接下来我们正式进入统计 Word 文档字数的实践阶段。字数统计是文档处理中的一个常见需求,例如在内容审核、报告校验或自动化文档分析场景中,都需要快速获取整个 Word 文档的文字数量。
Spire.Doc 主要通过调用 Document.getBuiltinDocumentProperties() 方法读取 Word 文档的文档属性,并从中获取该文档的字数。下面我们对该方法的使用过程进行详细说明,并给出示例代码供参考。
使用 Java 统计 Word 文档字数的步骤:
下方为完整的代码示例:
import com.spire.doc.*;
public class countWordsNumber {
public static void main(String[] args) {
// 创建一个 Document 实例
Document document = new Document();
// 加载示例 Word 文档
document.loadFromFile("/input/示例文档.docx");
// 计算字数
System.out.println("字数:" + document.getBuiltinDocumentProperties().getWordCount());
// 计算没有空格的字符数
System.out.println("字符数:" + document.getBuiltinDocumentProperties().getCharCount());
// 计算带空格的字符数
System.out.println("字符数(计入空白格):" + document.getBuiltinDocumentProperties().getCharCountWithSpace());
}
}
微软 Word 字数统计 VS Java 字数统计结果对比:

提示:在对字数精度要求较高的场景中,也可以先提取 Word 文档中的文本内容,再根据业务规则自行统计,从而避免因文档属性未更新而带来的统计偏差。
大部分情况下,统计全文字数就能满足基本的审核需求,但在一些要求更加严格的应用场景中,往往还需要对单个段落进行字数控制。例如在新闻稿或内容平台投稿文章中,常常会要求首段控制在 120 字以内,以便读者在短时间内快速理解文章主题,提高阅读意愿。基于这一需求,下面我们来看看如何使用 Java 按段落维度统计 Word 文档中的字数,并实现更精细化的文档内容分析。
Java 统计 Word 文档段落字数的步骤:
下方的示例代码展示了怎样获取第一节中第一个段落的字数和字符数:
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import java.util.ArrayList;
import java.util.List;
public class countWordsNumber {
public static void main(String[] args) {
// 创建 Document 实例并加载文档
Document doc = new Document();
doc.loadFromFile("/input/示例文档.docx");
// 获取第一个节的第一个段落
Paragraph paragraph = doc.getSections().get(0).getParagraphs().get(0);
// 创建列表存储统计结果
List<String> resultList = new ArrayList<>();
// 获取该段落的字数和字符数并添加到列表
resultList.add("该段落字数: " + paragraph.getWordCount());
resultList.add("该段落字符数: " + paragraph.getCharCount());
// 打印到控制台预览
for (String line : resultList) {
System.out.println(line);
}
// 关闭文档
doc.close();
}
}
Spire.Doc for Java 统计 Word 文档段落字数的结果:

在实际应用中,如果某些段落或章节超过了字数限制,还可以进一步按内容长度拆分 Word 文档,将超出部分单独保存,便于后续审核或重新编辑。
Q1:统计结果为什么和 Word 中显示的字数不一致?
A:如果使用 Document.getBuiltinDocumentProperties() 获取字数,读取的是文档的内置属性,而不是对正文内容的实时扫描。当文档内容被修改但未重新保存,或 Word 未及时更新字数属性时,就可能出现不一致。建议刷新或重新保存 Word 文档后再运行代码。
Q2:段落字数统计是否包含空格、换行或标点符号?
A:这取决于具体的统计实现方式。通常基于文本内容统计时,空格和换行会被忽略,但标点是否计入字数需要根据业务规则自行处理,在代码中进行相应过滤或保留。
Q3:表格、页眉页脚中的文字会被统计吗?
A:如果只遍历正文段落,通常不会包含页眉、页脚或表格内容。若业务上需要统计这些部分,需要额外遍历对应的对象。
Q4:中文和英文混排时,字数如何计算更合理?
A:常见做法是中文按字统计,英文按单词或字符统计。具体规则应与实际审核或业务标准保持一致。
借助 Java 对 Word 文档进行字数统计并不复杂,无论是全文统计还是按段落精细化分析,都可以根据实际需求灵活实现。在 Spire.Doc for Java 的帮助下,用户可以显著提升效率、减少人工校对成本。只要选定合适的统计方式并明确字数规则,就能让文档处理变得更轻松、更可控。
Spire.Office for Java 4.11.3已发布。该版本带来了一些新功能,比如:Spire.PDF for Java支持转换PDF到透明背景图片的功能;Spire.XLS for Java支持获取Excel文件的创建时间和最后保存时间;Spire.Doc for Java增强了转换Word到PDF/图片/HTML,以及转换HTML到Word的功能。此外还修复了其它一些已知问题,详情请阅读以下内容。
获取Spire.Office for Java 4.11.3请点击:https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html
新功能:
PdfDocument doc = new PdfDocument();
doc.loadFromFile("input.pdf");
doc.getConvertOptions().setPdfToImageOptions(0);
BufferedImage image = doc.saveAsImage(0);
问题修复:
新功能:
BuiltInDocumentProperties properties1 = workbook.getDocumentProperties();
properties1.getCreatedTime();
properties1.getLastSaveTime();
问题修复:
问题修复:
Spire.Doc for .NET 支持将 Office(Word/Excel/PowerPoint)、PDF、txt 等文件作为 OLE 对象插入到 Word 文档,双击该对象可直接访问或编辑该文件;除了以上常见的文件格式对象,也支持插入多媒体文件,如视频、音频等,本文将对此作详细介绍。
首先,您需要将 Spire.Doc for.NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中的 DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.Doc代码中嵌入多媒体文件的方法是通过调用 AppendOleObject(Stream oleStream, DocPicture olePicture, string fileExtension) 方法来实现,该方法中的三个参数解释分别为:
主要代码步骤如下:
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;
using System.IO;
namespace EmbedMediaFile
{
class Program
{
static void Main(string[] args)
{
//实例化Document类的对象,并添加Section
Document doc = new Document();
Section section = doc.AddSection();
//定义段落样式
ParagraphStyle style1 = new ParagraphStyle(doc);
style1.Name = "Style";
style1.CharacterFormat.FontName = "Calibri";
style1.CharacterFormat.FontSize = 18;
style1.CharacterFormat.Bold = true;
style1.CharacterFormat.TextColor = Color.BlueViolet;
doc.Styles.Add(style1);
//添加段落1,嵌入视频文件
Paragraph para1 = section.AddParagraph();
para1.AppendText("嵌入视频文件:");
para1.ApplyStyle(style1.Name);
Stream s1 = File.OpenRead("Video.mp4");
DocPicture pic1 = new DocPicture(doc);
pic1.LoadImage(Image.FromFile("logo1.png"));
para1.AppendOleObject(s1, pic1, "mp4");
//添加一个空白段落2
Paragraph para2 = section.AddParagraph();
//添加段落3,嵌入音频文件
Paragraph para3 = section.AddParagraph();
para3.AppendText("嵌入音频文件:");
para3.ApplyStyle(style1.Name);
Stream s2 = File.OpenRead("Audio.mp3");
DocPicture pic2 = new DocPicture(doc);
pic2.LoadImage(Image.FromFile("logo2.png"));
para3.AppendOleObject(s2, pic2, "mp3");
//保存文档
doc.SaveToFile("Result.docx", FileFormat.Docx2013);
}
}
}Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.Drawing
Imports System.IO
Namespace EmbedMediaFile
Class Program
Private Shared Sub Main(args As String())
'实例化Document类的对象,并添加Section
Dim doc As New Document()
Dim section As Section = doc.AddSection()
'定义段落样式
Dim style1 As New ParagraphStyle(doc)
style1.Name = "Style"
style1.CharacterFormat.FontName = "Calibri"
style1.CharacterFormat.FontSize = 18
style1.CharacterFormat.Bold = True
style1.CharacterFormat.TextColor = Color.BlueViolet
doc.Styles.Add(style1)
'添加段落1,嵌入视频文件
Dim para1 As Paragraph = section.AddParagraph()
para1.AppendText("嵌入视频文件:")
para1.ApplyStyle(style1.Name)
Dim s1 As Stream = File.OpenRead("Video.mp4")
Dim pic1 As New DocPicture(doc)
pic1.LoadImage(Image.FromFile("logo1.png"))
para1.AppendOleObject(s1, pic1, "mp4")
'添加一个空白段落2
Dim para2 As Paragraph = section.AddParagraph()
'添加段落3,嵌入音频文件
Dim para3 As Paragraph = section.AddParagraph()
para3.AppendText("嵌入音频文件:")
para3.ApplyStyle(style1.Name)
Dim s2 As Stream = File.OpenRead("Audio.mp3")
Dim pic2 As New DocPicture(doc)
pic2.LoadImage(Image.FromFile("logo2.png"))
para3.AppendOleObject(s2, pic2, "mp3")
'保存文档
doc.SaveToFile("Result.docx", FileFormat.Docx2013)
End Sub
End Class
End Namespace嵌入后的文档效果:

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。