文档元数据是存储在文档内部的关于文档的信息,例如作者、编辑时间等。作为 C# 开发人员,您可以在云端以编程方式轻松编辑 PDF 文档的元数据信息。在本文中,您将学习如何在 C# 中使用 REST API 编辑 PDF 文件的元数据。
本文应涵盖以下主题:
文档元数据操作 REST API 和 .NET SDK
为了编辑 PDF 文档的元数据,我将使用 GroupDocs.Metadata Cloud 的 .NET SDK API。它允许您从几乎所有行业标准文件格式中添加、编辑、检索和删除元数据。您可以对 PDF、Microsoft Word、Excel 电子表格、PowerPoint 演示文稿、Outlook 电子邮件、Visio、OneNote、Project、音频、视频、AutoCAD、存档、JPEG、BMP、PNG 和 TIFF 执行此类操作。它还为 Cloud API 提供 Java SDK 作为其文档元数据操作家族成员。
您可以从 NuGet 包管理器将适用于 .NET 的 GroupDocs.Metadata Cloud SDK 安装到您的 Visual Studio 项目,如下所示:
您还可以在包管理器控制台中使用以下命令安装 NuGet 包:
Install-Package GroupDocs.Metadata-Cloud
在开始执行步骤和可用代码示例之前,请从 dashboard 获取您的 Client ID 和 Client Secret。获得客户端 ID 和密码后,添加如下所示的代码:
string clientID = "112f0f38-9dae-42d5-b4fc-cc84ae644972";
string clientSecret = "16ad3fe0bdc39c910f57d2fd48a5d618";
string myStorage = "";
Configuration configuration = new Configuration(clientID, clientSecret);
configuration.ApiBaseUrl = "https://api.groupdocs.cloud";
在 C# 中使用 REST API 编辑 PDF 文件的元数据
您可以按照以下简单步骤设置 PDF 文档的元数据:
- 上传PDF文件至云端
- 使用C#更新PDF文档的元数据
- 下载 生成的文件
上传文件
首先,使用下面给出的代码示例将 PDF 文件上传到云端:
# 接口初始化
FileApi fileApi = new FileApi(configuration);
string path = @"C:\Files";
var file = Directory.GetFiles(path, "input.pdf", SearchOption.AllDirectories).FirstOrDefault();
if (file.Length != 0)
{
var relativeFilePath = file.Replace(path, string.Empty).Trim(Path.DirectorySeparatorChar);
var fileStream = File.Open(file, FileMode.Open);
fileApi.UploadFile(new UploadFileRequest(relativeFilePath, fileStream, myStorage));
fileStream.Close();
}
因此,上传的 PDF 文件 (input.pdf) 将在云端仪表板的 文件部分 中可用。
使用 C# 更新 PDF 文件的元数据
您可以按照下面给出的步骤以编程方式更新 PDF 文件的元数据。
- 创建 MetadataApi 实例
- 在FileInfo模型中设置PDF文件路径
- 定义设置选项
- 为 SetPropert 提供新值和类型
- 定义 SearchCriteria,提供要为其更新值的 NameOptions
- 使用 SetOptions 创建 SetRequest
- 通过调用MetadataApi.Set()方法获取结果
以下代码示例显示了如何使用 REST API 通过 PDF 文档的属性名称设置元数据。
# 接口初始化
var apiInstance = new MetadataApi(configuration);
try
{
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
FilePath = "input.pdf",
StorageName = myStorage
};
// 定义设置选项
var options = new SetOptions
{
FileInfo = fileInfo,
Properties = new List<SetProperty>
{
new SetProperty
{
NewValue = "hello",
Type = "String",
SearchCriteria = new SearchCriteria
{
NameOptions = new NameOptions
{
Value = "Keywords"
}
},
}
}
};
// 定义设置请求
var request = new SetRequest(options);
var response = apiInstance.Set(request);
Console.WriteLine($"Count of changes: {response.SetCount}");
Console.WriteLine("Resultant file path: " + response.Path);
}
catch (Exception e)
{
Console.WriteLine("Exception while calling MetadataApi: " + e.Message);
}
以下代码片段显示了如何通过将 ExactPhrase 属性设置为 True 来匹配准确的属性名称:
# 接口初始化
var apiInstance = new MetadataApi(configuration);
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
FilePath = "input.pdf",
StorageName = myStorage
};
// 定义设置选项
var options = new SetOptions
{
FileInfo = fileInfo,
Properties = new List<SetProperty>
{
new SetProperty
{
NewValue = "This is title",
Type = "String",
SearchCriteria = new SearchCriteria
{
NameOptions = new NameOptions
{
Value = "Title",
MatchOptions = new MatchOptions
{
ExactPhrase = true
}
}
},
}
}
};
// 定义设置请求
var request = new SetRequest(options);
var response = apiInstance.Set(request);
以下代码片段显示了如何使用正则表达式定义搜索条件以提供 MatchOptions:
# 接口初始化
var apiInstance = new MetadataApi(configuration);
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
FilePath = "input.pdf",
StorageName = myStorage
};
// 定义设置选项
var options = new SetOptions
{
FileInfo = fileInfo,
Properties = new List<SetProperty>
{
new SetProperty
{
NewValue = "new value",
Type = "String",
SearchCriteria = new SearchCriteria
{
NameOptions = new NameOptions
{
Value = "^Tit.*",
MatchOptions = new MatchOptions
{
IsRegex = true
}
}
},
}
}
};
// 定义设置请求
var request = new SetRequest(options);
var response = apiInstance.Set(request);
以下代码片段显示了如何通过提供属性值来更新元数据:
# 接口初始化
var apiInstance = new MetadataApi(configuration);
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
FilePath = "input.pdf",
StorageName = myStorage
};
// 定义设置选项
var options = new SetOptions
{
FileInfo = fileInfo,
Properties = new List<SetProperty>
{
new SetProperty
{
NewValue = "Simply set by Property Value",
Type = "String",
SearchCriteria = new SearchCriteria
{
ValueOptions = new ValueOptions
{
Value = "Windows User",
Type = "String"
}
},
}
}
};
// 定义设置请求
var request = new SetRequest(options);
var response = apiInstance.Set(request);
下载更新文件
上述代码示例将更新后的 PDF 文件保存在云端,可以使用以下代码示例下载:
# 接口初始化
var fileApi = new FileApi(configuration);
var file = "metadata\\set_metadata\\input_pdf\\input.pdf";
var downloadRequest = new DownloadFileRequest(file, myStorage);
Stream downloadResponse = fileApi.DownloadFile(downloadRequest);
using (var fileStream = File.Create("C:\\Files\\sample_input.pdf"))
{
downloadResponse.Seek(0, SeekOrigin.Begin);
downloadResponse.CopyTo(fileStream);
}
在线试用
请试用以下使用上述 API 开发的免费在线 PDF 元数据操作工具。
https://products.groupdocs.app/metadata/pdf
结论
在本文中,您学习了如何在云端编辑 PDF 文档的元数据。本文还介绍了如何以编程方式将 PDF 文件上传到云端,然后从云端下载更新后的文件。您可以使用 文档 了解有关 GroupDocs.Metadata Manipulation Cloud API 的更多信息。我们还提供了一个 API 参考 部分,让您可以直接通过浏览器可视化我们的 API 并与之交互。如有任何歧义,请随时在论坛上与我们联系。