介绍
PDF(可移植文档格式)文档因其一致性和平台独立性而被广泛应用于各行各业。在许多专业环境中,确保这些文档的真实性和可追溯性至关重要。实现这一点的一个有效方法是将元数据嵌入到 PDF 文件中。
在本综合教程中,我们将探讨如何使用 GroupDocs.Signature for .NET 为 PDF 文档添加元数据签名。元数据签名允许您在文档中嵌入其他信息,例如作者详细信息、创建时间戳、文档标识符和自定义值,而不会明显改变文档的外观。
先决条件
在开始之前,请确保您已准备好以下事项:
- 适用于 .NET 的 GroupDocs.Signature - 下载并安装库
- 开发环境 - Visual Studio 或任何其他与 .NET 兼容的 IDE
- PDF 文档 - 用于签名的示例 PDF 文件
- 基本 C# 知识 - 熟悉 C# 编程语言
导入命名空间
首先导入必要的命名空间来访问 GroupDocs.Signature 功能:
using System;
using System.IO;
using GroupDocs.Signature;
using GroupDocs.Signature.Domain;
using GroupDocs.Signature.Options;
步骤 1:设置文件路径
首先,定义 PDF 文档的路径并指定要保存签名输出的位置:
// 指定 PDF 文档的路径
string filePath = "sample.pdf";
// 定义输出目录和文件路径
string outputDirectory = "Your Document Directory";
string outputFilePath = Path.Combine(outputDirectory, "SignPdfWithMetadata", "SignedWithMetadata.pdf");
// 确保输出目录存在
Directory.CreateDirectory(Path.GetDirectoryName(outputFilePath));
步骤2:初始化签名对象
使用源 PDF 文档创建 Signature 类的实例:
using (Signature signature = new Signature(filePath))
{
// 签名代码将放在这里
}
步骤 3:定义元数据选项
创建并配置元数据选项,添加各种类型的元数据签名:
// 创建元数据选项对象
MetadataSignOptions options = new MetadataSignOptions();
// 使用流畅的界面添加各种类型的元数据
options
.Add(new PdfMetadataSignature("Author", "Mr.Sherlock Holmes")) // 字符串值
.Add(new PdfMetadataSignature("CreatedOn", DateTime.Now)) // 日期时间值
.Add(new PdfMetadataSignature("DocumentId", 123456)) // 整数值
.Add(new PdfMetadataSignature("SignatureId", 123.456D)) // 双倍值
.Add(new PdfMetadataSignature("Amount", 123.456M)) // 十进制值
.Add(new PdfMetadataSignature("Total", 123.456F)); // 浮点值
步骤 4:使用元数据签署 PDF
将元数据签名应用到 PDF 文档并保存结果:
// 签署文档并保存到输出路径
SignResult result = signature.Sign(outputFilePath, options);
// 显示成功消息
Console.WriteLine($"\nSource document signed successfully with {result.Succeeded.Count} metadata signature(s).");
Console.WriteLine($"Signed document saved at: {outputFilePath}");
完整示例
以下是将所有步骤整合在一起的完整代码示例:
using System;
using System.IO;
using GroupDocs.Signature;
using GroupDocs.Signature.Domain;
using GroupDocs.Signature.Options;
namespace SignPdfWithMetadataExample
{
class Program
{
static void Main(string[] args)
{
// 指定文件路径
string filePath = "sample.pdf";
string outputFilePath = Path.Combine("Your Document Directory", "SignPdfWithMetadata", "SignedWithMetadata.pdf");
// 确保输出目录存在
Directory.CreateDirectory(Path.GetDirectoryName(outputFilePath));
// 使用元数据对 PDF 进行签名
using (Signature signature = new Signature(filePath))
{
// 创建元数据选项对象
MetadataSignOptions options = new MetadataSignOptions();
// 添加不同类型的元数据签名
options
.Add(new PdfMetadataSignature("Author", "Mr.Sherlock Holmes")) // 字符串值
.Add(new PdfMetadataSignature("CreatedOn", DateTime.Now)) // 日期时间值
.Add(new PdfMetadataSignature("DocumentId", 123456)) // 整数值
.Add(new PdfMetadataSignature("SignatureId", 123.456D)) // 双倍值
.Add(new PdfMetadataSignature("Amount", 123.456M)) // 十进制值
.Add(new PdfMetadataSignature("Total", 123.456F)); // 浮点值
// 签署文件并保存到文件
SignResult result = signature.Sign(outputFilePath, options);
// 显示结果
Console.WriteLine($"\nSource document signed successfully with {result.Succeeded.Count} signature(s).");
Console.WriteLine($"File saved at {outputFilePath}.");
}
}
}
}
高级 PDF 元数据操作
添加具有命名空间支持的自定义元数据
PDF 文档支持具有 XML 命名空间支持的自定义元数据:
// 使用命名空间添加自定义元数据
options.Add(new PdfMetadataSignature("CustomProperty", "Custom Value")
{
NamespaceUri = "http://your-namespace.com/schema”
});
在签名的 PDF 中搜索元数据
签名后,您可能需要验证或提取元数据:
// 创建元数据的搜索选项
MetadataSearchOptions searchOptions = new MetadataSearchOptions();
// 搜索元数据签名
SearchResult searchResult = signature.Search(searchOptions);
// 显示找到的签名
Console.WriteLine($"Found {searchResult.Signatures.Count} metadata signatures:");
foreach (var foundSignature in searchResult.Signatures)
{
MetadataSignature metadataSignature = foundSignature as MetadataSignature;
if (metadataSignature != null)
{
Console.WriteLine($"- {metadataSignature.Name}: {metadataSignature.Value} ({metadataSignature.Value.GetType().Name})");
}
}
使用标准 PDF 元数据
PDF 文档具有可以访问和修改的标准元数据字段:
// 设置标准 PDF 元数据字段
options
.Add(new PdfMetadataSignature("Title", "Important Contract"))
.Add(new PdfMetadataSignature("Subject", "Legal Agreement"))
.Add(new PdfMetadataSignature("Keywords", "contract, agreement, legal, binding"))
.Add(new PdfMetadataSignature("Creator", "Legal Department"))
.Add(new PdfMetadataSignature("Producer", "GroupDocs.Signature"));
结论
在本教程中,您学习了如何使用 GroupDocs.Signature for .NET 为 PDF 文档添加元数据签名。将元数据嵌入 PDF 文件,可以有效增强文档真实性、添加关键信息,并改进文档管理工作流程。
PDF 中的元数据签名在商业环境中尤为重要,因为文档的可追溯性和真实性验证至关重要。嵌入的元数据可以包含文档来源、作者、创建时间、版本以及与组织工作流程相关的自定义属性的信息。
通过使用 GroupDocs.Signature 实现元数据签名,您可以确保您的 PDF 文档在其整个生命周期内保持其完整性并提供可验证的信息。
常见问题解答
我可以修改 PDF 文档中现有的元数据吗?
是的,您可以修改 PDF 文档中现有的元数据。当您应用与现有元数据签名同名的新元数据签名时,其值将相应更新。
PDF 文档中的元数据签名对最终用户可见吗?
元数据签名在文档内容本身中不可见。但是,可以通过 Adobe Acrobat 等 PDF 阅读器的文档属性面板或使用专门的元数据查看工具来查看它们。
我可以加密或保护 PDF 中的元数据吗?
GroupDocs.Signature 提供文档安全选项,包括加密。您可以应用文档级加密来保护整个 PDF,包括其元数据。
我可以向 PDF 添加多少元数据有限制吗?
虽然 PDF 规范没有严格限制,但添加过多的元数据可能会增加文件大小。建议在元数据中仅包含相关且必要的信息。
添加元数据后,我可以通过编程验证 PDF 是否被篡改吗?
是的,GroupDocs.Signature 提供验证功能,可以帮助检测文档在签名后是否被修改,包括元数据的更改。