文档元数据是存储在文档内部的关于文档的信息,例如作者、编辑时间等。作为 C# 开发人员,您可以在云端以编程方式轻松编辑 PDF 文档的元数据信息。在本文中,您将学习如何在 C# 中使用 REST API 编辑 PDF 文件的元数据。

本文应涵盖以下主题:

文档元数据操作 REST API 和 .NET SDK

groupdocsmetadata-for-cloud

为了编辑 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 包管理器安装 GroupDocs.Metadata Cloud

通过 NuGet 包管理器安装 GroupDocs.Metadata Cloud

您还可以在包管理器控制台中使用以下命令安装 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 文件上传到云端:

# 接口初始化
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);
}
在 C# 中使用 REST API 编辑 PDF 文档的元数据

按属性名称设置元数据

以下代码片段显示了如何通过将 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);
通过在 C# 中使用 REST API 匹配 PDF 文档中的确切属性名称来编辑元数据

通过匹配准确的属性名称设置元数据

以下代码片段显示了如何使用正则表达式定义搜索条件以提供 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);
在 C# 中使用 REST API 通过在 PDF 文档中使用正则表达式匹配属性名称来编辑元数据

通过将属性名称与正则表达式匹配来设置元数据

以下代码片段显示了如何通过提供属性值来更新元数据:

# 接口初始化
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);
在 C# 中使用 REST API 通过匹配 PDF 文档中的属性值来编辑元数据

通过匹配属性值设置元数据

下载更新文件

上述代码示例将更新后的 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 并与之交互。如有任何歧义,请随时在论坛上与我们联系。

也可以看看