Là nhà phát triển C#, bạn có thể cần kết hợp hai hoặc nhiều tệp PDF thành một tệp PDF. Trong những trường hợp như vậy, nếu bạn không muốn in từng tệp PDF khác nhau như báo cáo, biên lai, v.v. thì hãy kết hợp chúng thành một tài liệu và in. Trong bài viết này, tôi trình bày cách hợp nhất các tệp PDF bằng API REST.

Hợp nhất nhiều tệp PDF bằng API còn lại

Các chủ đề sau đây sẽ được đề cập trong bài viết này:

Hợp nhất tệp REST API và .NET SDK

Để hợp nhất các tệp, tôi sẽ sử dụng .NET SDK của GroupDocs.Merger Cloud API. Đây là SDK đám mây hiệu suất cao và giàu tính năng được sử dụng để hợp nhất nhiều tài liệu thành một, chia một tài liệu thành nhiều tài liệu. Nó cung cấp chức năng sắp xếp lại hoặc thay thế các trang tài liệu, thay đổi hướng trang, quản lý mật khẩu tài liệu và thực hiện các thao tác khác một cách dễ dàng đối với mọi định dạng tệp được hỗ trợ. Hiện tại, nó cũng cung cấp SDK Java, PHP, Ruby, Android và Node.js dưới dạng các thành viên gia đình hợp nhất tài liệu cho Cloud API.

Bạn có thể cài đặt GroupDocs.Merger-Cloud cho dự án Visual Studio của mình từ trình quản lý Gói NuGet hoặc sử dụng lệnh sau trong bảng điều khiển Trình quản lý gói:

Install-Package GroupDocs.Merger-Cloud

Bạn cần lấy ID khách hàng và Bí mật khách hàng từ bảng điều khiển trước khi bắt đầu làm theo các bước và ví dụ mã có sẵn. Thêm ID khách hàng và Bí mật khách hàng của bạn vào mã như minh họa bên dưới:

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);

Hợp nhất các tệp PDF bằng API REST

Bạn có thể kết hợp hai hoặc nhiều tệp PDF hoặc hợp nhất các trang cụ thể của tệp PDF bằng cách thực hiện theo các bước đơn giản được đề cập bên dưới:

Tải lên tài liệu PDF

Đầu tiên, tải tài liệu PDF lên Đám mây bằng bất kỳ phương pháp nào sau đây:

  • Sử dụng bảng điều khiển
  • Tải lên từng tệp một bằng cách sử dụng API tệp tải lên từ trình duyệt
  • Tải lên theo chương trình bằng ví dụ mã được cung cấp bên dưới:
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.");
}

Do đó, các tệp PDF sẽ được tải lên Cloud Storage.

Kết hợp các trang cụ thể từ các tệp PDF

Các tệp PDF đã tải lên tại dashboard.groupdocs.cloud/files

Hợp nhất các tệp PDF đã tải lên

Ví dụ mã đơn giản này trình bày cách hợp nhất nhiều tệp PDF bằng API REST thành một tệp 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);

        // Tải xuống tệp đã hợp nhất
        DownloadFiles(fileApi, "merged-files.pdf");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

Kết hợp các trang cụ thể của tệp PDF với một tệp khác

Bạn có thể kết hợp các trang cụ thể của tệp PDF với một tệp khác. Với mục đích này, bạn cần cung cấp một loạt các trang như minh họa trong ví dụ về mã dưới đây.

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);

        // Tải xuống tệp đã hợp nhất
        DownloadFiles(fileApi, "merged-pages.pdf");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

Tải xuống tệp đã hợp nhất

Mẫu mã trên sẽ lưu tệp PDF đã hợp nhất trên đám mây. Bạn có thể tải xuống bằng mẫu mã sau:

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);
    }
}

Phần kết luận

Trong bài viết này, bạn đã học cách kết hợp hai hoặc nhiều tệp PDF hoặc các trang cụ thể của tệp PDF trên đám mây với .NET Merger REST API bằng C#. Bạn cũng đã học cách lập trình tải các tệp lên đám mây rồi tải chúng xuống từ đám mây. Bạn có thể tìm hiểu thêm về GroupDocs.Merger Cloud API từ tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với hỗ trợ.