Saltar al pie de página
USANDO IRONPDF

¿Cómo fusionar archivos PDF en C# .NET?

 Tareas de combinación de PDF .NET con IronPDF: una guía completa de C#: Imagen 1 - Combinar archivos PDF con IronPDF

Combinar varios archivos PDF en un solo documento es un requisito común en las aplicaciones comerciales. Ya sea que esté generando informes financieros consolidados, agrupando contratos legales para archivarlos o ensamblando facturas de varias partes, la fusión programática de archivos PDF ahorra tiempo y elimina los pasos manuales. IronPDF proporciona una API sencilla que maneja esto en solo unas pocas líneas de C#, sin necesidad de herramientas externas ni utilidades de línea de comandos.

Esta guía cubre todos los escenarios prácticos: fusiones de dos archivos, fusiones de listas de múltiples archivos, procesamiento en memoria con MemoryStream y operaciones posteriores a la fusión como protección con contraseña y compresión.

Comience hoy mismo con una prueba gratuita para agregar capacidades de combinación de PDF a su aplicación .NET .

¿Cómo empezar a utilizar IronPDF?

Antes de escribir cualquier código de combinación, instale IronPDF desde NuGet . El paquete está destinado a .NET Framework 4.6.2+ y .NET 5/6/7/8/9/10, por lo que funciona en aplicaciones de consola, servicios ASP.NET Core , Azure Functions y proyectos de Windows Forms sin dependencias de tiempo de ejecución adicionales.

Abra la consola del Administrador de paquetes NuGet y ejecute:

Install-Package IronPdf
Install-Package IronPdf
SHELL

O usa la CLI de .NET:

dotnet add package IronPdf
dotnet add package IronPdf
SHELL

Para obtener una guía de instalación paso a paso, incluida la aplicación de la clave de licencia, consulte la descripción general de la instalación de IronPDF . Una vez instalado el paquete y aplicada una clave de licencia, todos los ejemplos de esta guía se ejecutarán sin modificaciones.

¿Cómo fusionar documentos PDF mediante programación?

El método PdfDocument.Merge proporciona la forma más directa de combinar dos archivos PDF en un solo PDF. Cargue cada documento fuente con PdfDocument.FromFile, pase ambos objetos a Merge y guarde el resultado.

Factura de entrada uno

 Tareas de combinación de PDF .NET con IronPDF: una guía completa de C#: Imagen 2 - Factura de entrada uno

Factura de entrada dos

 Tareas de combinación de PDF .NET con IronPDF: una guía completa de C#: Imagen 3 - Factura de entrada dos

using IronPdf;

// Load two input PDF files from disk
PdfDocument pdfA = PdfDocument.FromFile("invoice_one.pdf");
PdfDocument pdfB = PdfDocument.FromFile("invoice_two.pdf");

// Merge PDF documents into a single PDF
PdfDocument merged = PdfDocument.Merge(pdfA, pdfB);

// Save the merged document
merged.SaveAs("combined_invoices.pdf");
using IronPdf;

// Load two input PDF files from disk
PdfDocument pdfA = PdfDocument.FromFile("invoice_one.pdf");
PdfDocument pdfB = PdfDocument.FromFile("invoice_two.pdf");

// Merge PDF documents into a single PDF
PdfDocument merged = PdfDocument.Merge(pdfA, pdfB);

// Save the merged document
merged.SaveAs("combined_invoices.pdf");
$vbLabelText   $csharpLabel

Resultado

 Tareas de combinación de PDF .NET con IronPDF: una guía completa de C#: Imagen 4 - Documentos PDF combinados

El método Merge acepta dos instancias PdfDocument y devuelve un nuevo documento que contiene todas las páginas de ambas fuentes en orden. El archivo resultante conserva el formato original, las imágenes, las fuentes y el contenido incrustado de cada entrada. Una vez que tenga el documento fusionado, puede guardarlo en el disco, devolverlo desde un punto final web o agregar encabezados y pies de página antes de entregarlo a los usuarios.

Tenga en cuenta que PdfDocument.FromFile funciona tanto con rutas de archivos como con cadenas de URI, por lo que los documentos almacenados en el almacenamiento de blobs en la nube se pueden cargar directamente por URL. La operación de fusión no es destructiva: los dos objetos de origen permanecen sin cambios después de la llamada.

¿Cómo fusionar varios archivos PDF a la vez?

Cuando necesite combinar más de dos documentos, pase un List<PdfDocument> (o cualquier IEnumerable<PdfDocument>) al método sobrecargado Merge. Este enfoque escala desde tres archivos a cientos sin cambiar la estructura del código.

using IronPdf;

// Build a list of quarterly reports
List<PdfDocument> pdfsToMerge = new()
{
    PdfDocument.FromFile("report_q1.pdf"),
    PdfDocument.FromFile("report_q2.pdf"),
    PdfDocument.FromFile("report_q3.pdf"),
    PdfDocument.FromFile("report_q4.pdf")
};

// Combine into one annual report
PdfDocument merged = PdfDocument.Merge(pdfsToMerge);

// Save the final document
merged.SaveAs("annual_report.pdf");
using IronPdf;

// Build a list of quarterly reports
List<PdfDocument> pdfsToMerge = new()
{
    PdfDocument.FromFile("report_q1.pdf"),
    PdfDocument.FromFile("report_q2.pdf"),
    PdfDocument.FromFile("report_q3.pdf"),
    PdfDocument.FromFile("report_q4.pdf")
};

// Combine into one annual report
PdfDocument merged = PdfDocument.Merge(pdfsToMerge);

// Save the final document
merged.SaveAs("annual_report.pdf");
$vbLabelText   $csharpLabel

Documento PDF fusionado

 Tareas de combinación de PDF .NET con IronPDF: una guía completa de C#: Imagen 5 - Archivo PDF de salida recién combinado

IronPDF procesa las páginas en orden de lista, por lo que la secuencia de documentos en su List<PdfDocument> controla directamente el orden de las páginas en la salida. Si necesita reordenar páginas después de la fusión, la API de administración de páginas le permite copiar, mover o eliminar páginas individuales desde cualquier PdfDocument.

Este patrón también funciona con documentos generados en tiempo de ejecución. Por ejemplo, puede convertir HTML a PDF para cada sección de un informe y combinar los objetos PdfDocument resultantes sin necesidad de escribir archivos intermedios en el disco. Lo mismo se aplica a las conversiones de DOCX a PDF cuando el contenido de origen proviene de documentos de Word.

¿Cómo fusionar archivos PDF usando MemoryStream?

El procesamiento en memoria es necesario para los servicios web y las funciones sin servidor donde escribir en el disco no es posible o es demasiado lento. IronPDF admite la carga de documentos PDF desde matrices de bytes y expone el resultado fusionado como un MemoryStream a través de la propiedad Stream.

using IronPdf;
using System.IO;

// Load PDF content as byte arrays (e.g., from database or HTTP response)
byte[] firstFileBytes = File.ReadAllBytes("contract_part1.pdf");
byte[] secondFileBytes = File.ReadAllBytes("contract_part2.pdf");

// Create PdfDocument objects from byte arrays
PdfDocument doc1 = new PdfDocument(firstFileBytes);
PdfDocument doc2 = new PdfDocument(secondFileBytes);

// Merge and access the result as a stream
PdfDocument merged = PdfDocument.Merge(doc1, doc2);
MemoryStream outputStream = merged.Stream;

// Optionally save to disk as well
merged.SaveAs("merged_contract.pdf");
using IronPdf;
using System.IO;

// Load PDF content as byte arrays (e.g., from database or HTTP response)
byte[] firstFileBytes = File.ReadAllBytes("contract_part1.pdf");
byte[] secondFileBytes = File.ReadAllBytes("contract_part2.pdf");

// Create PdfDocument objects from byte arrays
PdfDocument doc1 = new PdfDocument(firstFileBytes);
PdfDocument doc2 = new PdfDocument(secondFileBytes);

// Merge and access the result as a stream
PdfDocument merged = PdfDocument.Merge(doc1, doc2);
MemoryStream outputStream = merged.Stream;

// Optionally save to disk as well
merged.SaveAs("merged_contract.pdf");
$vbLabelText   $csharpLabel

Fichero de contrato fusionado

 Tareas de combinación de PDF .NET con IronPDF: una guía completa de C#: Imagen 6 - Documento PDF de contrato combinado

La propiedad Stream devuelve un MemoryStream posicionado al inicio, listo para escribirse en una respuesta HTTP o pasarse a otro paso de procesamiento. En un controlador ASP.NET Core , se puede devolver File(outputStream, "application/pdf", "merged.pdf") directamente. No se crean archivos temporales, lo que simplifica la limpieza y reduce la sobrecarga del disco en escenarios de alto rendimiento.

IronPDF acepta rutas de archivos de cadenas, matrices de bytes y secuencias de forma intercambiable como fuentes de entrada, por lo que puede mezclarlos y combinarlos en la misma llamada de combinación. Un documento cargado desde un BLOB de base de datos se puede fusionar con uno obtenido de una URL sin ningún paso de conversión intermedio.

¿Cómo se conservan los marcadores y la navegación en los archivos fusionados?

Al fusionar archivos PDF, IronPDF conserva la estructura de marcadores de cada documento de origen. Los lectores ven la tabla de contenidos completa de todos los archivos combinados en el panel de navegación de la salida fusionada, lo que hace que sea sencillo para los usuarios saltar entre secciones que se originaron en diferentes documentos fuente. Los marcadores en la especificación PDF se almacenan en el diccionario de esquema del documento y IronPDF reconstruye esta estructura correctamente para todas las fuentes fusionadas.

La conservación de marcadores se realiza automáticamente sin necesidad de configuración adicional. Si los archivos de origen contienen marcadores anidados (capítulos y subsecciones), la jerarquía se mantiene en la salida fusionada. Para los documentos fusionados que necesitan una tabla de contenido unificada en lugar de árboles de marcadores separados por documento, la API de tabla de contenido le permite crear una estructura de navegación personalizada después de la fusión.

Si se creó un documento fuente sin metadatos de marcadores, la salida fusionada no contendrá entradas de esquema para esa sección. Antes de entregar un archivo fusionado en un contexto de cumplimiento o de archivo, verifique qué marcadores se han transferido inspeccionando la propiedad OutlineManager en el PdfDocument resultante. Puede cambiar el nombre de las etiquetas de marcadores, reordenar las entradas o inyectar nuevos elementos que unan el contenido de diferentes documentos de origen en una jerarquía lógica mediante programación. Para los flujos de trabajo que también requieren la conversión de PDF/A para el archivado a largo plazo, aplique el paso de conversión de cumplimiento después de la fusión en lugar de hacerlo en cada fuente individualmente. Convertir el documento fusionado final en una sola pasada es más eficiente y evita tener que volver a convertir resultados que pueden necesitar más ediciones.

Después de la fusión, también puede agregar números de página al documento combinado utilizando la función de numeración de páginas , lo cual es útil cuando la salida abarca docenas de páginas de múltiples fuentes.

¿Cómo aplicar protección con contraseña a un PDF fusionado?

Después de la fusión, el PdfDocument resultante expone SecuritySettings para aplicar contraseñas de usuario y propietario, restringiendo los derechos de impresión, copia y edición.

using IronPdf;

PdfDocument pdfA = PdfDocument.FromFile("part1.pdf");
PdfDocument pdfB = PdfDocument.FromFile("part2.pdf");

PdfDocument merged = PdfDocument.Merge(pdfA, pdfB);

// Require a password to open the document
merged.SecuritySettings.UserPassword = "reader123";

// Owner password controls permissions such as printing and editing
merged.SecuritySettings.OwnerPassword = "admin456";

merged.SaveAs("secured_merged.pdf");
using IronPdf;

PdfDocument pdfA = PdfDocument.FromFile("part1.pdf");
PdfDocument pdfB = PdfDocument.FromFile("part2.pdf");

PdfDocument merged = PdfDocument.Merge(pdfA, pdfB);

// Require a password to open the document
merged.SecuritySettings.UserPassword = "reader123";

// Owner password controls permissions such as printing and editing
merged.SecuritySettings.OwnerPassword = "admin456";

merged.SaveAs("secured_merged.pdf");
$vbLabelText   $csharpLabel

El UserPassword solicita a los lectores que vean el documento, mientras que el OwnerPassword limita los cambios de permisos. Puede combinar la protección con contraseña con restricciones de impresión, indicadores de prevención de copia y firmas digitales. Para obtener una guía completa de las opciones de permisos, el tutorial de seguridad de PDF cubre todas las configuraciones disponibles.

Si los documentos de origen están protegidos con contraseña, IronPDF puede descifrar los PDF cifrados antes de fusionarlos, siempre que tenga las credenciales del propietario. Esto significa que puede fusionar documentos seguros de diferentes proveedores o sistemas en una única salida re-segura sin necesidad de pasos de desbloqueo manual.

¿Cómo reducir el tamaño de archivo de un PDF fusionado?

La fusión de documentos grandes con muchas imágenes puede producir resultados que sean difíciles de almacenar o enviar. La API de compresión de PDF de IronPDF puede reducir significativamente el tamaño del archivo al volver a comprimir las imágenes incrustadas con una configuración de calidad más baja y preservando la nitidez del texto.

using IronPdf;

PdfDocument pdfA = PdfDocument.FromFile("report_section1.pdf");
PdfDocument pdfB = PdfDocument.FromFile("report_section2.pdf");

PdfDocument merged = PdfDocument.Merge(pdfA, pdfB);

// Compress embedded images to reduce output file size
merged.CompressImages(60); // quality 0–100

merged.SaveAs("compressed_merged.pdf");
using IronPdf;

PdfDocument pdfA = PdfDocument.FromFile("report_section1.pdf");
PdfDocument pdfB = PdfDocument.FromFile("report_section2.pdf");

PdfDocument merged = PdfDocument.Merge(pdfA, pdfB);

// Compress embedded images to reduce output file size
merged.CompressImages(60); // quality 0–100

merged.SaveAs("compressed_merged.pdf");
$vbLabelText   $csharpLabel

El argumento entero de CompressImages es un porcentaje de calidad: los valores entre 50 y 75 generalmente reducen el tamaño del archivo entre un 40 y un 70 % para documentos con muchas imágenes sin degradación visible del contenido del texto. En el caso de documentos que contienen gráficos vectoriales e imágenes rasterizadas mínimas, los ahorros son menores, pero es seguro incluirlos de todos modos.

¿Cuáles son los casos de uso comunes para la fusión de PDF?

La API PdfDocument.Merge se adapta a una amplia gama de flujos de trabajo de documentos en aplicaciones .NET de producción:

Escenarios comunes de fusión de PDF y el enfoque IronPDF para cada uno
Caso de usoFuentes de entradaEnfoque recomendado
Informe financiero anualCuatro archivos PDF trimestrales en discoCombinar listas con `Merge(List)`
Contrato legal de varias partesContrato base + modificaciones de la base de datosCarga de matriz de bytes + fusión en memoria
Consolidación de facturasFacturas renderizadas en HTML por línea de artículoHTML a PDF por elemento, luego combinación de listas
Entrega automatizada de informesArchivos fuente DOCX y PDF mixtosConversión de DOCX a PDF y luego fusión
Archivo seguro de documentosInformes de varios departamentosCombinación de listas + `SecuritySettings`

Para los flujos de trabajo en los que es necesario extraer documentos de forma selectiva antes de fusionarlos, la API de PDF dividido puede extraer rangos de páginas específicos de un documento fuente. Puede copiar páginas entre archivos PDF directamente, lo que resulta útil cuando solo ciertas secciones de un documento grande necesitan aparecer en la salida fusionada.

IronPDF también admite la extracción de texto e imágenes de documentos fusionados para su procesamiento posterior, lo que lo hace adecuado como paso central de ensamblaje de documentos en canales de datos más grandes.

¿Cuales son tus próximos pasos?

El método PdfDocument.Merge de IronPDF cubre la gama completa de escenarios de fusión de PDF .NET con un código mínimo: fusiones de dos archivos, fusiones de listas de múltiples archivos, procesamiento en memoria, salidas protegidas con contraseña y compresión posterior a la fusión. Cada enfoque utiliza la misma API consistente independientemente del tipo de fuente de entrada.

Comience una prueba gratuita para ejecutar estos ejemplos en su propio proyecto. Para la implementación de producción, consulte las opciones de licencia que se adaptan al tamaño y el uso de su equipo.

Después de agregar soporte para combinación, explore operaciones de documentos relacionadas: divida un PDF en archivos separados , agregue números de página a salidas de varias páginas o aplique marcas de agua a todas las páginas del documento combinado.

Empiece con IronPDF ahora.
green arrow pointer

Preguntas Frecuentes

¿Cómo fusionas dos archivos PDF en C#?

Carga cada archivo con PdfDocument.FromFile, luego llama a PdfDocument.Merge(pdfA, pdfB) y guarda el resultado con merged.SaveAs.

¿Cómo fusionas más de dos archivos PDF en .NET?

Crea una List<PdfDocument> que contenga todos los documentos fuente y pásala a PdfDocument.Merge(list). La salida preserva el orden de la lista.

¿Puedes fusionar PDFs en memoria sin escribir en disco?

Sí. Carga documentos desde arreglos de bytes usando new PdfDocument(bytes), fusiónalos y accede al resultado vía merged.Stream para evitar cualquier escritura en disco.

¿IronPDF preserva marcadores al fusionar PDFs?

Sí. IronPDF lleva automáticamente adelante la estructura de marcadores (esquema) de cada documento fuente al resultado fusionado, incluyendo jerarquías de marcadores anidados.

¿Cómo proteges con contraseña un PDF fusionado en C#?

Después de fusionar, establece merged.SecuritySettings.UserPassword para la contraseña de lectura y merged.SecuritySettings.OwnerPassword para la contraseña de permisos, luego llama a SaveAs.

¿Cómo reduces el tamaño de archivo de un PDF fusionado?

Llama a merged.CompressImages(quality) con un valor de calidad entre 50 y 75 antes de guardar. Esto re-comprime las imágenes raster embebidas y típicamente reduce el tamaño de archivo en un 40-70% en documentos pesados en imágenes.

¿Puede IronPDF fusionar archivos PDF cifrados?

Sí. IronPDF puede cargar y fusionar PDFs cifrados cuando tienes la contraseña de propietario. Usa PdfDocument.FromFile(path, password) para desbloquear el archivo antes de fusionar.

¿La API de fusión de IronPDF funciona en ASP.NET Core?

Sí. El resultado de la fusión puede ser devuelto como File(merged.Stream, "application/pdf", "merged.pdf") desde cualquier acción de controlador ASP.NET Core.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me