Como desarrollador de C#, es posible que deba combinar dos o más archivos PDF en un solo PDF. En tales casos, si no desea imprimir varios archivos PDF como informes, recibos, etc. uno por uno, combínelos en un solo documento e imprímalos. En este artículo, cubro cómo fusionar archivos PDF usando una API REST.

Combinar varios archivos PDF con una API Rest

En este artículo se tratarán los siguientes temas:

Fusión de archivos REST API y .NET SDK

Para fusionar archivos, utilizaré la API .NET SDK de GroupDocs.Merger Cloud. Es un SDK de la nube rico en funciones y de alto rendimiento que se utiliza para fusionar varios documentos en uno, dividir un solo documento en varios documentos. Ofrece funcionalidad para reordenar o reemplazar páginas de documentos, cambiar la orientación de la página, administrar contraseñas de documentos y realizar otras manipulaciones fácilmente para cualquier formato de archivo compatible. Actualmente, también proporciona SDK de Java, PHP, Ruby, Android y Node.js como sus miembros de la familia de fusión de documentos para la API de la nube.

Puede instalar GroupDocs.Merger-Cloud en su proyecto de Visual Studio desde el administrador de paquetes NuGet o usando el siguiente comando en la consola del administrador de paquetes:

Install-Package GroupDocs.Merger-Cloud

Debe obtener su ID de cliente y Secreto de cliente del panel de control antes de comenzar a seguir los pasos y los ejemplos de código disponibles. Agregue su ID de cliente y Secreto de cliente en el código como se muestra a continuación:

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

Combinar archivos PDF usando una API REST

Puede combinar dos o más archivos PDF o fusionar páginas específicas de PDF siguiendo los sencillos pasos que se mencionan a continuación:

Sube los documentos PDF

En primer lugar, cargue los documentos PDF en la nube utilizando cualquiera de los siguientes métodos:

  • Usando el panel
  • Cargue todos los archivos uno por uno usando Upload File API desde el navegador
  • Cargue mediante programación utilizando el ejemplo de código que se proporciona a continuación:
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, los archivos PDF se cargarán en Cloud Storage.

Combinar páginas específicas de archivos PDF

Archivos PDF cargados en dashboard.groupdocs.cloud/files

Combinar los archivos PDF cargados

Este sencillo ejemplo de código demuestra cómo fusionar varios archivos PDF mediante una API REST en un solo 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);

        // Descargar el archivo combinado
        DownloadFiles(fileApi, "merged-files.pdf");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

Combine páginas específicas de un archivo PDF con otro archivo

Puede combinar páginas específicas de un archivo PDF con otro archivo. Para este propósito, debe proporcionar un rango de páginas como se muestra en el ejemplo de código que se proporciona a continuación.

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

        // Descargar el archivo combinado
        DownloadFiles(fileApi, "merged-pages.pdf");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

Descargar el archivo combinado

El ejemplo de código anterior guardará el archivo PDF combinado en la nube. Puede descargarlo utilizando el siguiente ejemplo 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);
    }
}

Conclusión

En este artículo, ha aprendido a combinar dos o más archivos PDF o páginas específicas de archivos PDF en la nube con la API REST de .NET Merger usando C#. También aprendió cómo cargar mediante programación los archivos en la nube y luego descargarlos desde la nube. Puede obtener más información sobre GroupDocs.Merger Cloud API en la documentación. En caso de cualquier ambigüedad, no dude en ponerse en contacto con soporte.