能不能查询出文件的元数据包括修改历史信息
概要
GroupDocs.Metadata .NET 主要用于读取和写入文档的通用元数据(如标题、作者、创建时间、自定义属性等),但在公开文档中并未声明能够直接获取 Office 文档的“修订/变更记录”(Track Changes)等编辑历史。如果需要获取 Word、Excel、PowerPoint 等文件的修订信息,通常需要使用能够解析这些内部结构的库(例如 GroupDocs.Editor .NET、Microsoft Open XML SDK 等)。
原因
- 功能定位:GroupDocs.Metadata 的职责是处理文件的核心属性和自定义属性,而不是文档内部的编辑历史。官方 API 列表中没有类似
DocumentInfo.Revisions或GetRevisions的成员。 - 修订信息的存放位置:在 Office Open XML(.docx、.xlsx、.pptx)文件中,修订信息保存在特定的 XML 部分(如
word/trackChanges.xml),这些内容不属于标准元数据范畴。 - 文件类型限制:纯文本、图片或不支持修订的 PDF 等格式本身不保存此类信息,即使使用其他库也无法获取。
接下来该怎么做
- 确认文件类型
- 确认要读取的文件是支持“修订/变更记录”的 Office Open XML 格式(.docx、.xlsx、.pptx)。
- 对于 PDF、TXT、图片等格式,修订信息不存在,无法获取。
- 选择合适的库
- 首选:如果项目已经在使用 GroupDocs 系列产品,可考虑引入 GroupDocs.Editor .NET(提供
GetRevisions等 API 用于读取编辑历史)。 - 备选:使用 Microsoft Open XML SDK(官方免费)手动解析
trackChanges.xml或相应的修订部分。
- 使用 Open XML SDK 读取 Word 修订示例(C#)
using System;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
class RevisionReader
{
static void Main()
{
string filePath = @"C:\Docs\sample.docx"; // 替换为实际路径
using (WordprocessingDocument doc = WordprocessingDocument.Open(filePath, false))
{
var trackChangesPart = doc.MainDocumentPart.TrackChangesPart;
if (trackChangesPart != null)
{
var revisions = trackChangesPart.RootElement.Elements<Revision>();
Console.WriteLine("--- 修订历史 ---");
foreach (var rev in revisions)
{
Console.WriteLine($"类型: {rev.GetType().Name}");
Console.WriteLine($"作者: {rev.Author}");
Console.WriteLine($"时间: {rev.Date}");
Console.WriteLine($"ID: {rev.Id}");
Console.WriteLine("-------------------");
}
}
else
{
Console.WriteLine("文档未包含修订信息或未启用 Track Changes。");
}
}
}
}
- 如果希望继续使用 GroupDocs 产品
- 将 GroupDocs.Editor .NET 添加到项目(
Install-Package GroupDocs.Editor),参考官方示例:
var editor = new Editor(filePath);
var revisions = editor.GetRevisions(); // 返回 RevisionInfo 列表
RevisionInfo包含作者、时间、类型等属性,使用方式与上面的 Open XML 示例类似(具体类名和方法请查阅对应版本的 API 文档)。
- 排查常见问题
- 修订为空:确认在原始编辑软件(如 Word)中已打开“审阅 → 修订”,并在保存前未接受所有更改。
- 加载失败:检查文件是否受保护、只读或加密;若是,请先解除保护或提供密码。
- 版本兼容:确保使用的 Open XML SDK 版本与项目的 .NET 目标框架匹配,或使用对应的 GroupDocs.Editor 版本。
- 后续跟进
- 记录使用的库版本、目标文件扩展名以及出现的异常信息。
- 如项目必须统一使用 GroupDocs 系列,可评估是否升级到支持修订的 GroupDocs.Editor 版本,或在代码库中封装 Open XML 读取逻辑以提供统一接口。
结论
目前没有证据表明 GroupDocs.Metadata 本身能够直接查询文件的修改历史(修订记录)。若需要此类信息,建议使用 GroupDocs.Editor .NET 或 Microsoft Open XML SDK 等能够解析 Office 文档内部修订结构的工具。
麻烦请问一下啊能够跨电脑查看吗