我们很高兴宣布 GroupDocs.Parser for Java 26.10 已于 2026 年 10 月 发布。此版本为维护更新,重点在于修正:文本搜索在所有重载中再次可用,文档结构提取支持更多 Word 文档,文件信息能够准确报告加密状态,PDF 图像坐标现与 API 其他部分保持一致。授权现在由 GroupDocs.Foundation 处理,捆绑的 Aspose 组件也已更新。
本次发布的新功能
| 关键 | 摘要 | 类别 |
|---|---|---|
| PARSERJAVA-491 | Parser.search 在搜索未限定到页面时不再抛出 NullPointerException |
修复 |
| PARSERJAVA-513 | Parser.getStructure() 能处理包含页眉或页脚表格的 Word 文档,并返回格式良好的 XML |
修复 |
| — | Parser.getFileInfo(String) 将受密码保护的 DOCX、XLSX 和 PPTX 文件报告为加密 |
修复 |
| — | FileInfo.isEncrypted() 仅在 PDF 文档实际加密时返回 true |
修复 |
| — | PDF 图像矩形的测量基准改为页面顶部,保持与其他页面区域一致 | 修复 |
| PARSERJAVA-154 | 授权由 GroupDocs.Foundation 执行,这是 GroupDocs 产品共享的授权核心 | 更新 |
| PARSERJAVA-512 | 捆绑的 Aspose 组件已更新 | 更新 |
| PARSERJAVA-509 | 已发布的 POM 包含产品名称、简短描述、<url>、<organization> 和 <scm> |
更新 |
升级前需检查的行为更改
有两项更改会影响现有代码的观察结果:
- PDF 图像坐标。 PDF 图像矩形的顶部坐标现在相对于页面顶部测量。如果你的代码之前是从页面底部转换的,请去除该转换。
- Word 文档的结构 XML。 通过 Word 换行符分隔的单词现在在结构 XML 中以空格分隔。
修复
未限定到页面的文本搜索
自 25.5 版起,所有未限定到页面的 Parser.search 调用都会抛出 NullPointerException。这影响了 search(String keyword) 重载、search(String keyword, SearchOptions options)(searchByPages 为 false,默认值)以及请求高亮的搜索。searchByPages 为 true 的搜索不受影响。
在 26.10 中,这些调用将再次返回搜索结果:
try (Parser parser = new Parser("sample.pdf")) {
Iterable<SearchResult> results = parser.search("lorem");
if (results == null) {
return; // 此文档不支持搜索
}
for (SearchResult result : results) {
System.out.println(result.getPosition() + ": " + result.getText());
}
}
Word 文档的结构
Parser.getStructure() 以前在处理包含页眉或页脚表格的文字处理文档时会抛异常,并且当文档文本包含控制字符时返回的 XML 可能无法解析。两项问题已修复:
- 页眉和页脚中的表格按其逻辑网格描述:表格行索引、行内单元格索引以及跨越为 1;
- Word 换行字符(单元格结束、垂直制表、分页、分栏)转换为空格,避免单词连在一起;
- XML 1.0 不允许的字符被删除;
- 属性值的转义方式与文本相同。
受密码保护文档的文件信息
Parser.getFileInfo(String filePath) 重载未能识别受密码保护的 DOCX、XLSX 和 PPTX 文件:它返回大小为 0,且 isEncrypted() 对 DOCX、XLSX 为 false,对 PPTX 则没有文件类型。现在它的行为与 InputStream 重载一致:返回实际文件大小,isEncrypted() 为 true,并且 FileType.Unknown(加密文档的格式在未提供密码时无法读取)。
这使得检测受保护文件并使用密码打开变得简单:
FileInfo info = Parser.getFileInfo("protected.docx");
if (info.isEncrypted()) {
LoadOptions options = new LoadOptions("password");
try (Parser parser = new Parser("protected.docx", options);
TextReader reader = parser.getText()) {
System.out.println(reader.readToEnd());
}
}
PDF 文档的加密
FileInfo.isEncrypted() 之前对所有 PDF 文档都返回 true。现在仅对实际加密的 PDF 文档返回 true。
PDF 图像的位置
Parser.getImages() 返回的 PDF 图像矩形之前是相对于页面底部测量的,而文本、表格和其他页面区域是相对于页面顶部测量的。图像现在使用相同的基于顶部的坐标,因此 getImages(PageAreaOptions) 能在给定矩形内找到图像:
try (Parser parser = new Parser("images.pdf")) {
// 每页左上角 400 x 400 点范围内的图像
PageAreaOptions options = new PageAreaOptions(new Rectangle(new Point(0, 0), new Size(400, 400)));
for (PageImageArea image : parser.getImages(options)) {
System.out.println(image.getPage().getIndex() + ": " + image.getRectangle());
}
}
更新
在 GroupDocs.Foundation 上的授权
许可证验证、计量授权以及捆绑的 Aspose 组件的授权现在由 GroupDocs.Foundation 执行,这与其他 GroupDocs 产品使用的授权核心相同。授权 API 未变:License.setLicense、Metered.setMeteredKey、Metered.getConsumptionQuantity 和 Metered.getConsumptionCredit 的调用方式保持不变。
License license = new License();
license.setLicense("GroupDocs.Parser.Java.lic");
try (Parser parser = new Parser("document.docx");
TextReader reader = parser.getText()) {
System.out.println(reader.readToEnd());
}
捆绑的 Aspose 组件
| 组件 | 26.9 | 26.10 |
|---|---|---|
| Aspose.Cells | 26.3 | 26.9 |
| Aspose.Email | 26.1 | 26.8 |
| Aspose.PDF | 26.2 | 26.8.1 |
| Aspose.Slides | 26.2 | 26.9 |
| Aspose.Words | 26.3 | 26.8 |
| Aspose.BarCode | 26.4 | 26.6 |
| Aspose.Imaging | 25.12 | 25.12 |
| Aspose.ZIP | 25.10 | 25.10 |
| Aspose.Note | 23.3 | 23.3 |
该产品仍然运行在 Java 8 上。
已发布的制品元数据
已发布的 POM 现在包含名称 GroupDocs.Parser for Java、简短的库功能描述以及它读取的格式,<url> 指向产品页面,并声明了 <organization> 和 <scm>。这些信息会在 MVNRepository 等依赖索引中显示。代码、行为或 API 均未改变。
如何获取更新
Maven
在 pom.xml 中添加 GroupDocs 仓库和依赖:
<repositories>
<repository>
<id>groupdocs-artifacts-repository</id>
<name>GroupDocs Artifacts Repository</name>
<url>https://releases.groupdocs.com/java/repo/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-parser</artifactId>
<version>26.10</version>
</dependency>
</dependencies>
直接下载
从 GroupDocs.Parser for Java 26.10 下载页面 下载 JAR 包。