Fusionar PDF con API REST de C#

Este breve tutorial guía cómo fusionar PDF con la API REST de C#. Aprenderá a fusionar todos los archivos PDF con la interfaz C# REST utilizando el SDK. Explicará todos los pasos necesarios para desarrollar la aplicación para combinar múltiples archivos PDF.

Requisito previo

Pasos para combinar PDF con la API C# Low Code

  1. Establezca la clave API y el SID para inicializar el objeto de clase PdfApi
  2. Cree el objeto MergeDocuments y proporcione la lista de archivos PDF que desea fusionar
  3. Cargue todos los archivos PDF de origen utilizando el método UploadFile() en la clase PdfApi
  4. Llame al método PutMergeDocuments() para fusionar todos los archivos PDF en un único archivo PDF de destino
  5. Descargue y guarde el archivo PDF de salida que contiene el contenido de todos los archivos PDF combinados

Estos pasos resumen cómo combinar PDF en línea con C# REST API. Utilice el objeto de clase MergeDocuments para crear la lista de archivos PDF que desea fusionar y cargue todos estos archivos PDF en la nube usando el método PdfApi.UploadFile() e invoque el método PutMergeDocuments() para fusionar los archivos PDF en línea. La llamada API devuelve el estado OK, después de lo cual puede llamar al método DownloadFile para recuperar el archivo PDF de salida.

Código para combinar archivos PDF con API basada en C# .NET

using System;
using System.IO;
using Aspose.Pdf.Cloud.Sdk.Api;
using Aspose.Pdf.Cloud.Sdk.Model;
using System.Collections.Generic;
namespace Aspose.PDF.Cloud.Examples.Kb
{
public class PdfTasks
{
public static void SplitPDFFiles()
{
PdfApi pdfApi = new PdfApi("API KEY", "API SID");
String fileName = "sample.pdf";
String format = "pdf";
int from = 1;
int to = 2;
String storage = "";
String folder = "";
try
{
// Upload source file to aspose cloud storage
pdfApi.UploadFile(fileName, new MemoryStream( System.IO.File.ReadAllBytes(fileName)));
// Invoke Aspose.PDF Cloud SDK API to split pdf files
SplitResultResponse apiResponse = pdfApi.PostSplitDocument(fileName, format, from, to, storage, folder);
if (apiResponse.Status.Equals("OK"))
{
// Download created pdf file
foreach(var item in apiResponse.Result.Documents)
{
Stream storageRes = pdfApi.DownloadFile(item.Href);
storageRes.Position = 0;
using (FileStream fileStream = new FileStream(item.Href, FileMode.Create, FileAccess.Write))
{
storageRes.CopyTo(fileStream);
}
}
Console.WriteLine("Split PDF Files, Done!");
Console.ReadKey();
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}
}
public static void MergePDFFiles()
{
PdfApi pdfApi = new PdfApi("API KEY", "API SID");// For merging PDF files
String fileName = "sample-merged.pdf";
String storage = "";
String folder = "";
MergeDocuments body = new MergeDocuments(new List<string> { "sample.pdf", "input.pdf" });
try
{
// Load the input Word file
pdfApi.UploadFile("sample.pdf", new MemoryStream(System.IO.File.ReadAllBytes("sample.pdf")));
pdfApi.UploadFile("input.pdf", new MemoryStream(System.IO.File.ReadAllBytes("input.pdf")));
// Merge the PDF files
DocumentResponse apiResponse = pdfApi.PutMergeDocuments(fileName, body);
if (apiResponse != null && apiResponse.Status.Equals("OK"))
{
// Download created pdf file
Stream storageRes = pdfApi.DownloadFile(fileName);
// Save response stream to a file
storageRes.Position = 0;
using (FileStream fileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
storageRes.CopyTo(fileStream);
}
Console.WriteLine("Merge Multiple PDF Files, Done!");
Console.ReadKey();
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}
}
public static void CreatePDF()
{
try
{
PdfApi pdfApi = new PdfApi("2086fd1a0db8175482a26f53c230483e", "fd43bbdc-4e3d-4a75-8847-2138b3ad167e");
DocumentResponse response = pdfApi.PutCreateDocument("newPdfFile");
if (response != null && response.Status.Equals("OK"))
{
Paragraph para = PrepareParagraph("This is first text for new PDF");
pdfApi.PutAddText("newPdfFile", 1, para);
var stream = pdfApi.DownloadFile("newPdfFile", null, null);
using (var fileStream = File.Create("output.pdf"))
{
stream.Seek(0, SeekOrigin.Begin);
stream.CopyTo(fileStream);
}
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
Console.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}
}
private static Paragraph PrepareParagraph(string text)
{
List<TextLine> textLines = new List<TextLine>();
Segment segment = new Segment(Value: text);
List<Segment> segments = new List<Segment>();
segments.Add(segment);
TextLine textLine = new TextLine(Segments: segments);
textLines.Add(textLine);
Rectangle rectangle = new Rectangle(50.0, 800, 300.0, 850);
Paragraph paragraph = new Paragraph(Lines: textLines, Rectangle: rectangle);
return paragraph;
}
//THIS CODE IS CREATINg INVALID PDF FILE
public static void CreatePDFFromXML()
{
// For complete examples and data files, please go to https://github.com/aspose-pdf/Aspose.Pdf-for-Cloud
PdfApi pdfApi = new PdfApi("2086fd1a0db8175482a26f53c230483e", "fd43bbdc-4e3d-4a75-8847-2138b3ad167e");
String fileName = "input_out.pdf";
String templateFile = "sample.xsl";
String dataFile = "sample.xml";
//String templateType = "xml";
String storageRef = "my_xml";
//String folder = "";
try
{
// Upload source file to aspose cloud storage
byte[] templateFileBytes = System.IO.File.ReadAllBytes(templateFile);
MemoryStream templateFileStream = new MemoryStream(templateFileBytes);
byte[] dataFileBytes = System.IO.File.ReadAllBytes(dataFile);
MemoryStream dataFileStream = new MemoryStream(dataFileBytes);
pdfApi.UploadFile(templateFile, templateFileStream);
pdfApi.UploadFile(dataFile, dataFileStream);
// Invoke Aspose.PDF Cloud SDK API to create Pdf from XML
//DocumentResponse apiResponse = pdfApi.PutCreateDocument(fileName, templateFile, dataFile);
AsposeResponse apiResponse = pdfApi.PutXmlInStorageToPdf(fileName, dataFile, xslFilePath: templateFile, storage: "my_xml");
if (apiResponse != null && apiResponse.Status.Equals("OK"))
{
// Download created pdf file
Stream storageRes = pdfApi.DownloadFile(fileName);
// Save response stream to a file
//storageRes.CopyTo(new FileStream("Sample_out.pdf", FileMode.Create, FileAccess.Write));
storageRes.Position = 0;
SaveStreamToFile(storageRes, fileName);
//Console.WriteLine("Create PDF from XML, Done!");
//Console.ReadKey();
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
}
}
private static void SaveStreamToFile(Stream sourceStream, string filePath)
{
// Ensure the directory exists
//string directoryPath = Path.GetDirectoryName(filePath);
//if (!Directory.Exists(directoryPath))
//{
// Directory.CreateDirectory(directoryPath);
//}
// Create a FileStream to write the stream to the file
using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
sourceStream.CopyTo(fileStream);
}
}
}
}

Este código nos ha enseñado cómo concatenar archivos PDF con la interfaz C# REST. Utilice nombres similares en el método UploadFile() a los utilizados en la lista de archivos PDF en el objeto MergeDocuments. Cuando descargue el archivo PDF resultante, establezca el parámetro Posición en cero, de lo contrario no podrá guardar el archivo en el disco.

Este artículo explica cómo combinar documentos PDF en línea con la API basada en C# .NET. Para crear un archivo PDF vacío, consulte el siguiente artículo: Cree un documento PDF con NET REST API.

 Español