使用C#读取PDF元数据的操作指南
作者:大丸子
引言
在日常开发和文档管理场景中,PDF 往往不仅仅是“内容载体”,它还包含了大量描述性信息,例如标题、作者、创建时间、关键词,甚至是企业内部自定义的业务字段。这些信息统称为 PDF 元数据(Metadata)。
在内容管理系统(CMS)、文档归档系统、搜索引擎索引、合规审计以及自动化文档处理流程中,准确读取和分析 PDF 元数据,往往是一个不可忽视的环节。
本文将以 Free Spire.PDF for .NET 为基础,结合实际 C# 示例代码,系统讲解如何在 .NET 环境中读取 PDF 标准文档属性 和 自定义文档属性,并对关键类和实现逻辑进行深入解析,帮助你在真实项目中灵活应用。
一、PDF 元数据简介
PDF 元数据主要分为两类:
第一类是 标准文档属性,这是 PDF 规范中定义的通用字段,大多数 PDF 阅读器(如 Adobe Acrobat)都能直接显示,包括标题、作者、主题、关键词、创建时间、修改时间、生成器等。
第二类是 自定义文档属性,通常由生成 PDF 的程序或业务系统写入,用于保存特定业务信息,例如项目编号、合同编号、部门名称、版本号等。这类属性在界面中未必可见,但对程序来说非常有价值。
通过程序读取这些信息,可以实现自动分类、检索、校验和分析,而无需解析 PDF 的正文内容。
二、准备工作:引入 Free Spire.PDF for .NET
Free Spire.PDF for .NET 是一个轻量级的 PDF 处理库,支持 PDF 的创建、读取、解析和基本操作,非常适合用于文档自动化和工具型项目。
在项目中,你可以通过 NuGet (搜索FreeSpire.PDF)或官网下载 DLL 并手动引用。完成引用后,只需导入以下命名空间即可开始使用:
using Spire.Pdf;
三、读取 PDF 标准文档属性
下面的示例演示了如何使用 C# 加载一个 PDF 文件,并读取其标准元数据。
示例代码
using System;
using Spire.Pdf;
namespace PdfMetadataReader
{
class Program
{
static void Main(string[] args)
{
string pdfFilePath = "Sample.pdf";
try
{
using (PdfDocument doc = new PdfDocument())
{
// 加载 PDF 文件
doc.LoadFromFile(pdfFilePath);
Console.WriteLine("=== PDF 标准文档属性 ===");
Console.WriteLine($"标题 (Title): {doc.DocumentInformation.Title}");
Console.WriteLine($"作者 (Author): {doc.DocumentInformation.Author}");
Console.WriteLine($"主题 (Subject): {doc.DocumentInformation.Subject}");
Console.WriteLine($"关键词 (Keywords): {doc.DocumentInformation.Keywords}");
Console.WriteLine($"创建时间 (CreationDate): {doc.DocumentInformation.CreationDate}");
Console.WriteLine($"修改时间 (ModificationDate): {doc.DocumentInformation.ModificationDate}");
Console.WriteLine($"创建程序 (Creator): {doc.DocumentInformation.Creator}");
Console.WriteLine($"生成器 (Producer): {doc.DocumentInformation.Producer}");
}
}
catch (Exception ex)
{
Console.WriteLine("读取 PDF 元数据失败:" + ex.Message);
}
Console.ReadKey();
}
}
}读取结果

实现逻辑解析
程序首先创建 PdfDocument 对象,这是 Free Spire.PDF 中用于表示整个 PDF 文档的核心类。通过 LoadFromFile 方法加载指定路径的文件后,即可通过 DocumentInformation 属性访问文档元数据。
DocumentInformation 提供了一组强类型属性,每个属性都直接映射到 PDF 的标准字段。这种方式避免了手动解析底层结构,代码清晰、可读性高,非常适合用于工具型程序和后台服务。
在实际应用中,你可以将这些信息写入数据库、日志系统,或作为索引字段用于全文检索。
四、读取 PDF 自定义文档属性
除了标准属性外,很多 PDF 文件还包含自定义元数据。Free Spire.PDF 同样支持完整读取这些信息。
示例代码
using System;
using System.Collections.Generic;
using Spire.Pdf;
namespace PdfMetadataReader
{
class Program
{
static void Main(string[] args)
{
string pdfFilePath = "SampleWithCustomMetadata.pdf";
try
{
using (PdfDocument doc = new PdfDocument())
{
doc.LoadFromFile(pdfFilePath);
Console.WriteLine("=== PDF 自定义文档属性 ===");
var customProperties = doc.DocumentInformation.GetAllCustomProperties();
if (customProperties != null && customProperties.Count > 0)
{
foreach (KeyValuePair<string, string> item in customProperties)
{
Console.WriteLine($"{item.Key} : {item.Value}");
}
}
else
{
Console.WriteLine("当前 PDF 未包含自定义元数据。");
}
}
}
catch (Exception ex)
{
Console.WriteLine("读取 PDF 自定义元数据失败:" + ex.Message);
}
Console.ReadKey();
}
}
}读取结果

关键点说明
GetAllCustomProperties() 方法会返回一个键值对集合,键为属性名称,值为属性内容。这种结构非常适合动态字段的读取和处理,不需要提前知道具体属性名。
在企业系统中,这类自定义字段往往承载着重要业务含义,例如合同编号、审批人、系统版本等。通过程序自动提取,可以显著减少人工核对和录入成本。
五、常见应用场景分析
在实际项目中,读取 PDF 元数据通常与以下需求紧密相关:
在文档管理系统中,根据作者、创建时间或自定义字段对 PDF 自动分类和归档。
在搜索系统中,将 PDF 元数据作为索引字段,提高搜索效率和准确性。
在合规与审计场景中,批量检查 PDF 的生成工具、修改时间或来源信息。
在自动化流程中,根据 PDF 内嵌的业务字段触发不同的处理逻辑。
相比解析 PDF 正文内容,读取元数据性能更高、实现更简单,是很多系统的首选方案。
六、总结
本文围绕“读取 PDF 元数据”这一主题,详细介绍了如何使用 Free Spire.PDF for .NET 在 C# 中获取 PDF 的标准文档属性和自定义文档属性,并结合代码对实现思路进行了深入解析。
通过 PdfDocument 和 DocumentInformation 提供的 API,你可以在不解析页面内容的前提下,高效获取 PDF 的关键信息。这种方式不仅代码简洁,而且非常稳定,适合在批量处理、后台服务和企业级应用中使用。
掌握 PDF 元数据的读取方法,将有助于你构建更智能、更自动化的文档处理系统,也为后续的 PDF 分析和管理打下坚实基础。
以上就是使用C#读取PDF元数据的操作指南的详细内容,更多关于C#读取PDF元数据的资料请关注脚本之家其它相关文章!
