微雨濯年华 發表於 2025-12-22 08:25:33

使用C#读取PDF元数据的操作指南

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>引言</li><li>一、PDF 元数据简介</li><li>二、准备工作:引入 Free Spire.PDF for .NET</li><li>三、读取 PDF 标准文档属性</li><ul class="second_class_ul"><li>示例代码</li><li>读取结果</li><li>实现逻辑解析</li></ul><li>四、读取 PDF 自定义文档属性</li><ul class="second_class_ul"><li>示例代码</li><li>读取结果</li><li>关键点说明</li></ul><li>五、常见应用场景分析</li><ul class="second_class_ul"></ul><li>六、总结</li><ul class="second_class_ul"></ul></ul></div><p class="maodian"></p><h2>引言</h2>
<p>在日常开发和文档管理场景中,PDF 往往不仅仅是&ldquo;内容载体&rdquo;,它还包含了大量<strong>描述性信息</strong>,例如标题、作者、创建时间、关键词,甚至是企业内部自定义的业务字段。这些信息统称为&nbsp;<strong>PDF 元数据(Metadata)</strong>。<br />在内容管理系统(CMS)、文档归档系统、搜索引擎索引、合规审计以及自动化文档处理流程中,准确读取和分析 PDF 元数据,往往是一个不可忽视的环节。</p>
<p>本文将以&nbsp;<strong>Free Spire.PDF for .NET</strong>&nbsp;为基础,结合实际 C# 示例代码,系统讲解如何在 .NET 环境中读取&nbsp;<strong>PDF 标准文档属性</strong>&nbsp;和&nbsp;<strong>自定义文档属性</strong>,并对关键类和实现逻辑进行深入解析,帮助你在真实项目中灵活应用。</p>
<p class="maodian"></p><h2>一、PDF 元数据简介</h2>
<p>PDF 元数据主要分为两类:</p>
<p>第一类是&nbsp;<strong>标准文档属性</strong>,这是 PDF 规范中定义的通用字段,大多数 PDF 阅读器(如 Adobe Acrobat)都能直接显示,包括标题、作者、主题、关键词、创建时间、修改时间、生成器等。</p>
<p>第二类是&nbsp;<strong>自定义文档属性</strong>,通常由生成 PDF 的程序或业务系统写入,用于保存特定业务信息,例如项目编号、合同编号、部门名称、版本号等。这类属性在界面中未必可见,但对程序来说非常有价值。</p>
<p>通过程序读取这些信息,可以实现自动分类、检索、校验和分析,而无需解析 PDF 的正文内容。</p>
<p class="maodian"></p><h2>二、准备工作:引入 Free Spire.PDF for .NET</h2>
<p><strong>Free Spire.PDF for .NET</strong>&nbsp;是一个轻量级的 PDF 处理库,支持 PDF 的创建、读取、解析和基本操作,非常适合用于文档自动化和工具型项目。</p>
<p>在项目中,你可以通过 NuGet (搜索FreeSpire.PDF)或官网下载 DLL 并手动引用。完成引用后,只需导入以下命名空间即可开始使用:</p>
<div class="jb51code"><pre class="brush:csharp;">using Spire.Pdf;</pre></div>
<p class="maodian"></p><h2>三、读取 PDF 标准文档属性</h2>
<p>下面的示例演示了如何使用 C# 加载一个 PDF 文件,并读取其标准元数据。</p>
<p class="maodian"></p><p class="maodian"></p><h3>示例代码</h3>
<div class="jb51code"><pre class="brush:csharp;">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();
      }
    }
}</pre></div>
<p class="maodian"></p><p class="maodian"></p><h3>读取结果</h3>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122282631188.jpg" /></p>
<p class="maodian"></p><h3>实现逻辑解析</h3>
<p>程序首先创建&nbsp;<code>PdfDocument</code>&nbsp;对象,这是 Free Spire.PDF 中用于表示整个 PDF 文档的核心类。通过&nbsp;<code>LoadFromFile</code>&nbsp;方法加载指定路径的文件后,即可通过&nbsp;<code>DocumentInformation</code>&nbsp;属性访问文档元数据。</p>
<p><code>DocumentInformation</code>&nbsp;提供了一组强类型属性,每个属性都直接映射到 PDF 的标准字段。这种方式避免了手动解析底层结构,代码清晰、可读性高,非常适合用于工具型程序和后台服务。</p>
<p>在实际应用中,你可以将这些信息写入数据库、日志系统,或作为索引字段用于全文检索。</p>
<p class="maodian"></p><h2>四、读取 PDF 自定义文档属性</h2>
<p>除了标准属性外,很多 PDF 文件还包含自定义元数据。Free Spire.PDF 同样支持完整读取这些信息。</p>
<h3>示例代码</h3>
<div class="jb51code"><pre class="brush:csharp;">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 &amp;&amp; customProperties.Count &gt; 0)
                  {
                        foreach (KeyValuePair&lt;string, string&gt; item in customProperties)
                        {
                            Console.WriteLine($"{item.Key} : {item.Value}");
                        }
                  }
                  else
                  {
                        Console.WriteLine("当前 PDF 未包含自定义元数据。");
                  }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("读取 PDF 自定义元数据失败:" + ex.Message);
            }

            Console.ReadKey();
      }
    }
}</pre></div>
<h3>读取结果</h3>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025122282631189.jpg" /></p>
<p class="maodian"></p><h3>关键点说明</h3>
<p><code>GetAllCustomProperties()</code>&nbsp;方法会返回一个键值对集合,键为属性名称,值为属性内容。这种结构非常适合动态字段的读取和处理,不需要提前知道具体属性名。</p>
<p>在企业系统中,这类自定义字段往往承载着重要业务含义,例如合同编号、审批人、系统版本等。通过程序自动提取,可以显著减少人工核对和录入成本。</p>
<p class="maodian"></p><h2>五、常见应用场景分析</h2>
<p>在实际项目中,读取 PDF 元数据通常与以下需求紧密相关:</p>
<p>在文档管理系统中,根据作者、创建时间或自定义字段对 PDF 自动分类和归档。<br />在搜索系统中,将 PDF 元数据作为索引字段,提高搜索效率和准确性。<br />在合规与审计场景中,批量检查 PDF 的生成工具、修改时间或来源信息。<br />在自动化流程中,根据 PDF 内嵌的业务字段触发不同的处理逻辑。</p>
<p>相比解析 PDF 正文内容,读取元数据性能更高、实现更简单,是很多系统的首选方案。</p>
<p class="maodian"></p><h2>六、总结</h2>
<p>本文围绕&ldquo;读取 PDF 元数据&rdquo;这一主题,详细介绍了如何使用&nbsp;<strong>Free Spire.PDF for .NET</strong>&nbsp;在 C# 中获取 PDF 的标准文档属性和自定义文档属性,并结合代码对实现思路进行了深入解析。</p>
<p>通过&nbsp;<code>PdfDocument</code>&nbsp;和&nbsp;<code>DocumentInformation</code>&nbsp;提供的 API,你可以在不解析页面内容的前提下,高效获取 PDF 的关键信息。这种方式不仅代码简洁,而且非常稳定,适合在批量处理、后台服务和企业级应用中使用。</p>
<p>掌握 PDF 元数据的读取方法,将有助于你构建更智能、更自动化的文档处理系统,也为后续的 PDF 分析和管理打下坚实基础。</p>
<p>以上就是使用C#读取PDF元数据的操作指南的详细内容,更多关于C#读取PDF元数据的资料请关注琼殿技术社区其它相关文章!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>C#&nbsp;WPF实现读取文件夹中的PDF并显示其页数的操作指南</li><li>使用C#实现读取PDF中所有文本内容</li><li>C#编程读取文档Doc、Docx及Pdf内容的方法</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: 使用C#读取PDF元数据的操作指南