作为 C# 开发人员,您可能需要将两个或多个 PDF 文件组合成一个 PDF。在这种情况下,如果您不想一个一个地打印各种 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 文件
这个简单的代码示例演示了如何使用 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 的更多信息。如有任何疑问,请随时联系 支持。