In qualità di sviluppatore C#, potresti dover combinare due o più file PDF in un unico PDF. In questi casi, se non si desidera stampare vari file PDF come rapporti, ricevute, ecc. uno per uno, combinarli in un unico documento e stampare. In questo articolo, sto spiegando come unire i file PDF utilizzando un’API REST.

Unisci più file PDF utilizzando un'API Rest

In questo articolo saranno trattati i seguenti argomenti:

File Merger REST API e .NET SDK

Per unire i file, utilizzerò l’API .NET SDK of GroupDocs.Merger Cloud. È un Cloud SDK ricco di funzionalità e ad alte prestazioni utilizzato per unire più documenti in uno, dividere un singolo documento in più documenti. Offre funzionalità per riordinare o sostituire le pagine del documento, modificare l’orientamento della pagina, gestire le password del documento ed eseguire facilmente altre manipolazioni per qualsiasi formato di file supportato. Attualmente fornisce anche SDK Java, PHP, Ruby, Android e Node.js come document merger family members per l’API Cloud.

È possibile installare GroupDocs.Merger-Cloud nel progetto di Visual Studio da Gestione pacchetti NuGet o utilizzando il seguente comando nella console di Gestione pacchetti:

Install-Package GroupDocs.Merger-Cloud

È necessario ottenere l’ID client e il segreto client dalla dashboard prima di iniziare a seguire i passaggi e gli esempi di codice disponibili. Aggiungi il tuo ID cliente e Segreto cliente nel codice come mostrato di seguito:

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

Unisci i file PDF utilizzando un’API REST

Puoi combinare due o più file PDF o unire pagine specifiche di PDF seguendo i semplici passaggi indicati di seguito:

Carica i documenti PDF

Innanzitutto, carica i documenti PDF sul Cloud utilizzando uno dei seguenti metodi:

  • Utilizzo della dashboard
  • Carica tutti i file uno per uno utilizzando Upload File API dal browser
  • Carica a livello di codice utilizzando l’esempio di codice fornito di seguito:
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.");
}

Di conseguenza, i file PDF verranno caricati nel Cloud Storage.

Combina pagine specifiche da PDF

File PDF caricati su dashboard.groupdocs.cloud/files

Unisci i file PDF caricati

Questo semplice esempio di codice mostra come unire più file PDF utilizzando un’API REST in un singolo 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);

        // Scarica il file unito
        DownloadFiles(fileApi, "merged-files.pdf");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

Combina pagine specifiche di un file PDF con un altro file

È possibile combinare pagine specifiche di un file PDF con un altro file. A tale scopo, è necessario fornire un intervallo di pagine come illustrato nell’esempio di codice riportato di seguito.

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

        // Scarica il file unito
        DownloadFiles(fileApi, "merged-pages.pdf");
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception while calling api: " + e.Message);
    }
}

Scarica il file unito

L’esempio di codice precedente salverà il file PDF unito nel cloud. Puoi scaricarlo utilizzando il seguente esempio di codice:

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

Conclusione

In questo articolo si è appreso come combinare due o più file PDF o pagine specifiche di file PDF nel cloud con l’API REST di .NET Merger utilizzando C#. Hai anche imparato come caricare in modo programmatico i file sul cloud e poi scaricarli dal cloud. Puoi saperne di più su GroupDocs.Merger Cloud API dalla documentazione. In caso di ambiguità, non esitare a contattare support.