Как разработчик C#, вам может понадобиться объединить два или более PDF-файла в один PDF-файл. В таких случаях, если вы не хотите печатать различные PDF-файлы, такие как отчеты, квитанции и т. д., один за другим, объедините их в один документ и распечатайте. В этой статье я расскажу, как объединить файлы PDF с помощью REST API.

Объединение нескольких PDF-файлов с помощью Rest API

В этой статье должны быть раскрыты следующие темы:

REST API слияния файлов и пакет SDK для .NET

Для слияния файлов я буду использовать .NET SDK GroupDocs.Merger Cloud API. Это многофункциональный и высокопроизводительный облачный SDK, используемый для объединения нескольких документов в один, разделения одного документа на несколько документов. Он предлагает функции для изменения порядка или замены страниц документа, изменения ориентации страницы, управления паролями документов и легкого выполнения других манипуляций для любого поддерживаемого формата файла. В настоящее время он также предоставляет SDK для Java, PHP, Ruby, Android и Node.js в качестве членов семейства слияния документов для Cloud API.

Вы можете установить GroupDocs.Merger-Cloud в свой проект Visual Studio из диспетчера пакетов NuGet или с помощью следующей команды в консоли диспетчера пакетов:

Install-Package GroupDocs.Merger-Cloud

Вам необходимо получить свой идентификатор клиента и секрет клиента из панели инструментов, прежде чем вы начнете следовать инструкциям и доступным примерам кода. Добавьте свой идентификатор клиента и секрет клиента в код, как показано ниже:

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

Объединение PDF-файлов с помощью REST API

Вы можете объединить два или более 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-файлов

Файлы PDF загружены на dashboard.groupdocs.cloud/files

Объедините загруженные PDF-файлы

Этот простой пример кода демонстрирует, как объединить несколько PDF-файлов с помощью REST API в один 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);
    }
}

Заключение

В этой статье вы узнали, как объединить два или более PDF-файла или определенные страницы PDF-файлов в облаке с помощью REST API .NET Merger с использованием C#. Вы также узнали, как программно загружать файлы в облако, а затем загружать их из облака. Вы можете узнать больше о GroupDocs.Merger Cloud API из документации. В случае возникновения неясностей обращайтесь в поддержку.