作为 C# 开发人员,您可能需要将两个或多个 PDF 文件组合成一个 PDF。在这种情况下,如果您不想一个一个地打印各种 PDF 文件,如报告、收据等,则可以将它们合并到一个文档中并打印。在本文中,我将介绍如何使用 REST API 合并 PDF 文件。

使用 Rest API 合并多个 PDF 文件

本文应涵盖以下主题:

文件合并 REST API 和 .NET SDK

对于合并文件,我将使用 GroupDocs.Merger Cloud 的 .NET SDK API。它是一个功能丰富的高性能 Cloud SDK,用于将多个文档合并为一个,将单个文档拆分为多个文档。它提供重新排序或替换文档页面、更改页面方向、管理文档密码以及对任何支持的文件格式轻松执行其他操作的功能。目前,它还为 Cloud API 提供 Java、PHP、Ruby、Android 和 Node.js SDK 作为其文档合并家族成员

您可以从 NuGet 包管理器或在包管理器控制台中使用以下命令将 GroupDocs.Merger-Cloud 安装到您的 Visual Studio 项目:

Install-Package GroupDocs.Merger-Cloud

在开始执行步骤和可用代码示例之前,您需要从 仪表板 获取您的客户端 ID 和客户端密码。在代码中添加您的客户端 ID 和客户端密码,如下所示:

string MyClientId = "YOUR-CLIENT-ID";
string MyClientSecret = "YOUR-CLIENT-SECRET";
string MyStorage;

var storageConfig = new Configuration(MyClientId, MyClientSecret);
var documentApi = new DocumentApi(storageConfig);
var storageApi = new StorageApi(storageConfig);
var fileApi = new FileApi(storageConfig);

使用 REST API 合并 PDF 文件

您可以按照以下简单步骤合并两个或多个 PDF 文件或合并 PDF 的特定页面:

上传PDF文档

首先,使用以下任一方式将PDF文档上传至云端:

  • 使用仪表板
  • 使用 Upload File API 从浏览器一一上传所有文件
  • 使用下面给出的代码示例以编程方式上传:
public static void UploadFiles(StorageApi storageApi, FileApi fileApi)
{
	var path = @"C:\Files";

	var files = Directory.GetFiles(path, "*.pdf", SearchOption.AllDirectories);
	foreach (var file in files)
	{
		var relativeFilePath = file.Replace(path, string.Empty).Trim(Path.DirectorySeparatorChar);

		var response = storageApi.ObjectExists(new ObjectExistsRequest(relativeFilePath, MyStorage));
		if (response.Exists != null && !response.Exists.Value)
		{
			var fileStream = File.Open(file, FileMode.Open);

			fileApi.UploadFile(new UploadFileRequest(relativeFilePath, fileStream, MyStorage));
			fileStream.Close();
		}
	}

	Console.WriteLine("File Upload Process Completed.");
}

结果,PDF 文件将上传到云存储。

合并 PDF 中的特定页面

dashboard.groupdocs.cloud/files 上传 PDF 文件

合并上传的 PDF 文件

这个简单的代码示例演示了如何使用 REST API 将多个 PDF 文件合并为一个 PDF。

public static void MergeMultipleFiles(DocumentApi documentApi, FileApi fileApi)
{
    try
    {
        var item1 = new JoinItem
        {
            FileInfo = new GroupDocs.Merger.Cloud.Sdk.Model.FileInfo
            {
                FilePath = "one-page.pdf"
            }
        };

        var item2 = new JoinItem
        {
            FileInfo = new GroupDocs.Merger.Cloud.Sdk.Model.FileInfo
            {
                FilePath = "second-page.pdf"
            }
        };

        var options = new JoinOptions
        {
            JoinItems = new List<JoinItem> { item1, item2 },
            OutputPath = "merged-files.pdf"
        };

        var request = new JoinRequest(options);
        var response = documentApi.Join(request);

        Console.WriteLine("Output file path: " + response.Path);

        // 下载合并文件
        DownloadFiles(fileApi, "merged-files.pdf");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

将 PDF 文件的特定页面与另一个文件合并

您可以将 PDF 文件的特定页面与另一个文件合并。为此,您需要提供一系列页面,如以下代码示例所示。

public static void MergeSpecificPagesOfFiles(DocumentApi documentApi, FileApi fileApi)
{
    try
    {
        var item1 = new JoinItem
        {
            FileInfo = new GroupDocs.Merger.Cloud.Sdk.Model.FileInfo
            {
                FilePath = "sample-10-pages.pdf"
            },
        };

        var item2 = new JoinItem
        {
            FileInfo = new GroupDocs.Merger.Cloud.Sdk.Model.FileInfo
            {
                FilePath = "four-pages.pdf"
            },
            StartPageNumber = 1,
            EndPageNumber = 3,
            RangeMode = JoinItem.RangeModeEnum.OddPages
        };

        var options = new JoinOptions
        {
            JoinItems = new List<JoinItem> { item1, item2 },
            OutputPath = "merged-pages.pdf"
        };

        var request = new JoinRequest(options);
        var response = documentApi.Join(request);

        Console.WriteLine("Output file path: " + response.Path);

        // 下载合并文件
        DownloadFiles(fileApi, "merged-pages.pdf");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

下载合并文件

上面的代码示例将合并后的 PDF 文件保存在云端。您可以使用以下代码示例下载它:

public static void DownloadFiles(FileApi fileApi, string file)
{
    try
    {
        var downloadRequest = new DownloadFileRequest(file, MyStorage);

        Stream downloadResponse = fileApi.DownloadFile(downloadRequest);
        using (var fileStream = File.Create("C:\\Files\\" + file))
        {
            downloadResponse.Seek(0, SeekOrigin.Begin);
            downloadResponse.CopyTo(fileStream);
        }
        Console.WriteLine("File downloaded successfully");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

结论

在本文中,您了解了如何使用 C# 使用 .NET Merger REST API 合并云上的两个或多个 PDF 文件或 PDF 文件的特定页面。您还学习了如何以编程方式将文件上传到云端,然后从云端下载它们。您可以从 文档 了解有关 GroupDocs.Merger Cloud API 的更多信息。如有任何疑问,请随时联系 支持