Como desenvolvedor C#, pode ser necessário combinar dois ou mais arquivos PDF em um único PDF. Nesses casos, se você não quiser imprimir vários arquivos PDF, como relatórios, recibos, etc., um por um, combine-os em um documento e imprima. Neste artigo, estou abordando como mesclar arquivos PDF usando uma API REST.

Mesclar vários arquivos PDF usando uma API Rest

Os seguintes tópicos serão abordados neste artigo:

API REST de fusão de arquivos e SDK .NET

Para mesclar arquivos, usarei a API .NET SDK of GroupDocs.Merger Cloud. É um Cloud SDK rico em recursos e de alto desempenho usado para mesclar vários documentos em um, dividir um único documento em vários documentos. Ele oferece funcionalidade para reordenar ou substituir páginas de documentos, alterar a orientação da página, gerenciar senhas de documentos e realizar outras manipulações facilmente para qualquer formato de arquivo suportado. Atualmente, ela também fornece SDKs Java, PHP, Ruby, Android e Node.js como seus membros da família de fusão de documentos para a API do Cloud.

Você pode instalar GroupDocs.Merger-Cloud em seu projeto do Visual Studio a partir do gerenciador de pacotes NuGet ou usando o seguinte comando no console do Gerenciador de pacotes:

Install-Package GroupDocs.Merger-Cloud

Você precisa obter seu Client ID e Client Secret no dashboard antes de começar a seguir as etapas e os exemplos de código disponíveis. Adicione seu Client ID e Client Secret no código conforme demonstrado abaixo:

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

Mesclar arquivos PDF usando uma API REST

Você pode combinar dois ou mais arquivos PDF ou mesclar páginas específicas de PDFs seguindo as etapas simples mencionadas abaixo:

Carregar os documentos PDF

Em primeiro lugar, carregue os documentos PDF para a nuvem usando qualquer um dos seguintes métodos:

  • Usando o painel
  • Carregue todos os arquivos, um por um, usando Upload File API do navegador
  • Carregue programaticamente usando o exemplo de código fornecido abaixo:
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.");
}

Como resultado, os arquivos PDF serão carregados no Cloud Storage.

Combine páginas específicas de PDFs

Arquivos PDF carregados em dashboard.groupdocs.cloud/files

Mesclar os arquivos PDF enviados

Este exemplo de código simples demonstra como mesclar vários arquivos PDF usando uma API REST em um único 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);

        // Baixe o arquivo mesclado
        DownloadFiles(fileApi, "merged-files.pdf");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

Combine páginas específicas de um arquivo PDF com outro arquivo

Você pode combinar páginas específicas de um arquivo PDF com outro arquivo. Para isso, você precisa fornecer um intervalo de páginas, conforme demonstrado no exemplo de código abaixo.

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

        // Baixe o arquivo mesclado
        DownloadFiles(fileApi, "merged-pages.pdf");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

Baixe o arquivo mesclado

O exemplo de código acima salvará o arquivo PDF mesclado na nuvem. Você pode baixá-lo usando o seguinte exemplo de código:

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

Conclusão

Neste artigo, você aprendeu como combinar dois ou mais arquivos PDF ou páginas específicas de arquivos PDF na nuvem com a API REST do .NET Merger usando C#. Você também aprendeu como fazer upload de arquivos na nuvem de forma programática e baixá-los da nuvem. Você pode aprender mais sobre GroupDocs.Merger Cloud API na documentação. Em caso de ambiguidade, sinta-se à vontade para entrar em contato com suporte.