Saltar al pie de página
COMPARACIONES DE PRODUCTOS

Una Comparación del Corte de PDF en C# entre iTextSharp e IronPDF

Los archivos PDF (Formato de Documento Portátil) se utilizan ampliamente para compartir y presentar documentos, y hay ocasiones en las que puede necesitar dividir un PDF en varios archivos. Ya sea que desee extraer páginas específicas, dividir un documento grande en secciones más pequeñas o crear archivos individuales para cada capítulo, dividir PDFs puede ser una tarea valiosa en varios escenarios.

En este artículo, aprenderemos a dividir PDFs usando C#. C# es un lenguaje versátil y potente, y hay varias bibliotecas disponibles que facilitan relativamente la manipulación de PDFs. Exploraremos las siguientes dos bibliotecas para dividir PDFs en C#.

  1. iTextSharp
  2. IronPDF

Cómo Dividir PDF en C# Usando iTextSharp

  1. Primero, instale la biblioteca iText7.
  2. Cree un PdfReader desde el archivo PDF de entrada.
  3. Use un PdfDocument para trabajar con el contenido del PDF.
  4. Calcule el número de páginas para cada archivo dividido.
  5. Establezca valores iniciales para el rango de páginas.
  6. Use un bucle para procesar cada archivo dividido.
  7. Cree un nuevo PdfDocument para el archivo dividido actual.
  8. Copie las páginas del documento original al nuevo.
  9. Actualice los valores del rango de páginas para la siguiente iteración.
  10. Guarde el archivo PDF de salida completado.
  11. Repita hasta que se creen todos los archivos.
  12. Continúe el proceso para el número especificado de archivos divididos.

IronPDF

Una Comparación de Dividir PDF en C# Entre iTextSharp y IronPDF: Figura 1 - Página de IronPDF

IronPDF es una poderosa biblioteca de C# diseñada para trabajar con archivos PDF. It provides features for creating, modifying, and extracting content from PDF documents. Los desarrolladores pueden generar PDFs desde cero, editar PDFs existentes y fusionarlos o dividirlos. Además, IronPDF sobresale en convertir contenido HTML a formato PDF, haciéndolo útil para generar informes o documentación. Con soporte para firmas digitales, características de seguridad y resultados de alta calidad, IronPDF simplifica las tareas relacionadas con PDF en aplicaciones .NET.

iTextSharp

Una Comparación de Dividir PDF en C# Entre iTextSharp y IronPDF: Figura 2 - Página de iTextSharp

iTextSharp (iText 7) es una biblioteca ampliamente utilizada para trabajar con archivos PDF en el marco .NET. Proporciona potentes funciones para crear, modificar y extraer contenido de documentos PDF programáticamente. Los desarrolladores pueden usar iTextSharp para agregar texto, imágenes, tablas y otros elementos gráficos a PDFs. Además, admite ensamblaje de documentos, firmas digitales y conformidad con estándares de archivo y accesibilidad. Originalmente una biblioteca Java, iTextSharp fue portado a .NET y cuenta con una comunidad activa de desarrolladores y usuarios.

Instalación de la Biblioteca IronPDF

Para instalar el paquete NuGet de IronPDF usando la Consola del Administrador de Paquetes en Visual Studio, siga estos pasos:

  1. En Visual Studio, vaya a Herramientas -> Administrador de Paquetes NuGet -> Consola del Administrador de Paquetes.
  2. Use el siguiente comando para instalar el paquete NuGet de IronPDF:

    Install-Package IronPdf

Esto descargará e instalará el paquete de IronPDF junto con sus dependencias en su proyecto. Una vez completada la instalación, puede comenzar a usar IronPDF en su proyecto C# para tareas relacionadas con PDF.

Alternativamente, puede instalar IronPDF usando el Administrador de Paquetes NuGet en Visual Studio, o agregar el paquete directamente a su archivo de proyecto. Otra opción es descargar el paquete desde el sitio web oficial y agregarlo manualmente a su proyecto. Cada método proporciona una forma sencilla de integrar IronPDF en su proyecto C# para funcionalidades relacionadas con PDF.

Instalación de la Biblioteca iTextSharp

Para instalar iTextSharp usando la Consola del Administrador de Paquetes en Visual Studio, puede seguir estos pasos:

  1. En Visual Studio, vaya a Herramientas -> Administrador de Paquetes NuGet -> Consola del Administrador de Paquetes.
  2. Use el siguiente comando para instalar el paquete NuGet de iTextSharp:

    Install-Package itext7
    Install-Package itext7
    SHELL

Esto descargará e instalará el paquete de iTextSharp junto con sus dependencias en su proyecto. Una vez completada la instalación, puede comenzar a usar iTextSharp en su proyecto C# para trabajar con PDFs.

Dividir Documentos PDF en C# Usando IronPDF

Podemos dividir un archivo PDF en varios archivos PDF utilizando IronPDF. Proporciona una forma sencilla de lograr esto. El siguiente código tomará el archivo PDF fuente como entrada y lo dividirá en varios archivos PDF.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        string file = "input.pdf";
        // The folder to save the split PDFs
        string outputFolder = "output_split";
        int numberOfSplitFiles = 3; // Specify how many parts you want to split the PDF into
        // Call the SplitPdf method to split the PDF
        SplitPdfUsingIronPDF(file, outputFolder, numberOfSplitFiles);
    }

    static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int numberOfSplitFiles)
    {
        // Load the input PDF
        PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath);

        // Initialize page range values
        int firstPage = 1;
        int lastPage = 2;
        int totalPageInOneFile = sourceFile.PageCount / numberOfSplitFiles;

        for (int i = 1; i <= numberOfSplitFiles; i++)
        {
            // Copy multiple pages into a new document
            PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage, lastPage);

            // Generate the output file path
            string name = $@"{outputFolder}\SplitPDF_IronPDF_{i}.pdf";

            // Save the new split PDF
            newSplitPDF.SaveAs(name);

            // Update page range values for the next iteration
            firstPage = lastPage + 1;
            lastPage += totalPageInOneFile;
        }
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        string file = "input.pdf";
        // The folder to save the split PDFs
        string outputFolder = "output_split";
        int numberOfSplitFiles = 3; // Specify how many parts you want to split the PDF into
        // Call the SplitPdf method to split the PDF
        SplitPdfUsingIronPDF(file, outputFolder, numberOfSplitFiles);
    }

    static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int numberOfSplitFiles)
    {
        // Load the input PDF
        PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath);

        // Initialize page range values
        int firstPage = 1;
        int lastPage = 2;
        int totalPageInOneFile = sourceFile.PageCount / numberOfSplitFiles;

        for (int i = 1; i <= numberOfSplitFiles; i++)
        {
            // Copy multiple pages into a new document
            PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage, lastPage);

            // Generate the output file path
            string name = $@"{outputFolder}\SplitPDF_IronPDF_{i}.pdf";

            // Save the new split PDF
            newSplitPDF.SaveAs(name);

            // Update page range values for the next iteration
            firstPage = lastPage + 1;
            lastPage += totalPageInOneFile;
        }
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim file As String = "input.pdf"
		' The folder to save the split PDFs
		Dim outputFolder As String = "output_split"
		Dim numberOfSplitFiles As Integer = 3 ' Specify how many parts you want to split the PDF into
		' Call the SplitPdf method to split the PDF
		SplitPdfUsingIronPDF(file, outputFolder, numberOfSplitFiles)
	End Sub

	Private Shared Sub SplitPdfUsingIronPDF(ByVal inputPdfPath As String, ByVal outputFolder As String, ByVal numberOfSplitFiles As Integer)
		' Load the input PDF
		Dim sourceFile As PdfDocument = PdfDocument.FromFile(inputPdfPath)

		' Initialize page range values
		Dim firstPage As Integer = 1
		Dim lastPage As Integer = 2
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
		Dim totalPageInOneFile As Integer = sourceFile.PageCount / numberOfSplitFiles

		For i As Integer = 1 To numberOfSplitFiles
			' Copy multiple pages into a new document
			Dim newSplitPDF As PdfDocument = sourceFile.CopyPages(firstPage, lastPage)

			' Generate the output file path
			Dim name As String = $"{outputFolder}\SplitPDF_IronPDF_{i}.pdf"

			' Save the new split PDF
			newSplitPDF.SaveAs(name)

			' Update page range values for the next iteration
			firstPage = lastPage + 1
			lastPage += totalPageInOneFile
		Next i
	End Sub
End Class
$vbLabelText   $csharpLabel

Explicación del Código

El propósito de este código es dividir un archivo PDF dado en varios archivos PDF más pequeños utilizando la biblioteca IronPDF. El método SplitPdfUsingIronPDF se define para lograr esta funcionalidad.

Parámetros del Método

  1. inputPdfPath: Una cadena que representa la ruta al archivo PDF de entrada (por ejemplo, "input.pdf").
  2. outputFolder: Una cadena que representa la carpeta de salida donde se guardarán los archivos PDF divididos (por ejemplo, "output_split").
  3. numberOfSplitFiles: Un entero que indica en cuántos archivos PDF más pequeños se dividirá el PDF original.

Proceso de División

Dentro del método SplitPdfUsingIronPDF:

  1. Se crea un objeto PdfDocument llamado sourceFile cargando el PDF desde el inputPdfPath especificado.
  2. Se inicializan dos variables enteras, firstPage y lastPage. Estos representan el rango de páginas para dividir.
  3. Se calcula totalPageInOneFile dividiendo el conteo total de páginas del PDF fuente por el numberOfSplitFiles especificado.
  4. Un bucle itera de 1 a numberOfSplitFiles:
  5. Se crea un nuevo objeto PdfDocument llamado newSplitPDF.
  6. Las páginas de firstPage a lastPage (inclusive) se copian de sourceFile a newSplitPDF.
  7. El PDF resultante más pequeño se guarda con un nombre de archivo como "SplitPDF_IronPDF_1.pdf" (para la primera división) en la carpeta de salida especificada.
  8. Los valores de firstPage y lastPage se actualizan para la siguiente iteración.

Nota

Debe reemplazar "input.pdf" por la ruta real a su archivo PDF de entrada. Asegúrese de que la biblioteca IronPDF esté correctamente instalada y referenciada en su proyecto.

Los archivos de salida se crean de la siguiente manera:

Una Comparación de Dividir PDF en C# Entre iTextSharp y IronPDF: Figura 3 - Archivos de salida creados

Dividir PDFs en C# Usando iTextSharp

Ahora, utilizaremos iTextSharp para dividir nuestro documento PDF en varios archivos PDF. El siguiente código tomará el archivo fuente como entrada y dividirá ese documento PDF en múltiples archivos más pequeños.

using System;
using iText.Kernel.Pdf;

class Program
{
    static void Main(string[] args)
    {
        string inputPath = "input.pdf";
        // Output PDF files path (prefix for the generated files)
        string outputPath = "output_split";
        int numberOfSplitFiles = 3; // Specify how many parts you want to split the PDF into
        // Call the SplitPdf method to split the PDF
        SplitPdfUsingiTextSharp(inputPath, outputPath, numberOfSplitFiles);
    }

    static void SplitPdfUsingiTextSharp(string inputPdfPath, string outputFolder, int numberOfSplitFiles)
    {
        using (PdfReader reader = new PdfReader(inputPdfPath))
        {
            using (PdfDocument doc = new PdfDocument(reader))
            {
                // Calculate the number of pages for each split file
                int totalPageInOneFile = doc.GetNumberOfPages() / numberOfSplitFiles;
                int firstPage = 1;
                int lastPage = totalPageInOneFile;

                for (int i = 1; i <= numberOfSplitFiles; i++)
                {
                    // Generate the output file path
                    string filename = $@"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf";

                    // Create a new document and attach a writer for the specified output file
                    using (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename)))
                    {
                        // Copy pages from the original document to the new document
                        doc.CopyPagesTo(firstPage, lastPage, pdfDocument);
                    }

                    // Update page range values for the next iteration
                    firstPage = lastPage + 1;
                    lastPage += totalPageInOneFile;
                }
            }
        }
    }
}
using System;
using iText.Kernel.Pdf;

class Program
{
    static void Main(string[] args)
    {
        string inputPath = "input.pdf";
        // Output PDF files path (prefix for the generated files)
        string outputPath = "output_split";
        int numberOfSplitFiles = 3; // Specify how many parts you want to split the PDF into
        // Call the SplitPdf method to split the PDF
        SplitPdfUsingiTextSharp(inputPath, outputPath, numberOfSplitFiles);
    }

    static void SplitPdfUsingiTextSharp(string inputPdfPath, string outputFolder, int numberOfSplitFiles)
    {
        using (PdfReader reader = new PdfReader(inputPdfPath))
        {
            using (PdfDocument doc = new PdfDocument(reader))
            {
                // Calculate the number of pages for each split file
                int totalPageInOneFile = doc.GetNumberOfPages() / numberOfSplitFiles;
                int firstPage = 1;
                int lastPage = totalPageInOneFile;

                for (int i = 1; i <= numberOfSplitFiles; i++)
                {
                    // Generate the output file path
                    string filename = $@"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf";

                    // Create a new document and attach a writer for the specified output file
                    using (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename)))
                    {
                        // Copy pages from the original document to the new document
                        doc.CopyPagesTo(firstPage, lastPage, pdfDocument);
                    }

                    // Update page range values for the next iteration
                    firstPage = lastPage + 1;
                    lastPage += totalPageInOneFile;
                }
            }
        }
    }
}
Imports System
Imports iText.Kernel.Pdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim inputPath As String = "input.pdf"
		' Output PDF files path (prefix for the generated files)
		Dim outputPath As String = "output_split"
		Dim numberOfSplitFiles As Integer = 3 ' Specify how many parts you want to split the PDF into
		' Call the SplitPdf method to split the PDF
		SplitPdfUsingiTextSharp(inputPath, outputPath, numberOfSplitFiles)
	End Sub

	Private Shared Sub SplitPdfUsingiTextSharp(ByVal inputPdfPath As String, ByVal outputFolder As String, ByVal numberOfSplitFiles As Integer)
		Using reader As New PdfReader(inputPdfPath)
			Using doc As New PdfDocument(reader)
				' Calculate the number of pages for each split file
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
				Dim totalPageInOneFile As Integer = doc.GetNumberOfPages() / numberOfSplitFiles
				Dim firstPage As Integer = 1
				Dim lastPage As Integer = totalPageInOneFile

				For i As Integer = 1 To numberOfSplitFiles
					' Generate the output file path
					Dim filename As String = $"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf"

					' Create a new document and attach a writer for the specified output file
					Using pdfDocument As New PdfDocument(New PdfWriter(filename))
						' Copy pages from the original document to the new document
						doc.CopyPagesTo(firstPage, lastPage, pdfDocument)
					End Using

					' Update page range values for the next iteration
					firstPage = lastPage + 1
					lastPage += totalPageInOneFile
				Next i
			End Using
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Explicación del Código

Este código demuestra cómo dividir un archivo PDF grande en partes más pequeñas usando iTextSharp. Cada documento PDF más pequeño contendrá una parte del documento original.

Dividir PDF Usando iTextSharp

  1. La funcionalidad principal está encapsulada en el método SplitPdfUsingiTextSharp.
  2. El método anterior toma tres parámetros: inputPdfPath, outputFolder y numberOfSplitFiles.

Usando PdfReader y PdfDocument

Dentro del método SplitPdfUsingiTextSharp:

  1. Se crea un objeto PdfReader llamado reader cargando el PDF desde el inputPdfPath especificado.
  2. Se inicializa un objeto PdfDocument llamado doc usando el reader.
  3. El número total de páginas en el PDF fuente se divide por numberOfSplitFiles para determinar cuántas páginas debe contener cada PDF más pequeño.

Proceso de División

Un bucle itera de 1 a numberOfSplitFiles:

  1. Se crea un nuevo archivo PDF más pequeño con un nombre de archivo como "SplitPDF_iTextSharp_1.pdf" (para la primera división) en la carpeta de salida especificada.
  2. Dentro de este nuevo documento PDF (pdfDocument), las páginas se copian del documento original doc:
  3. De firstPage a lastPage (inclusive) se copian.
  4. El PDF más pequeño se guarda.
  5. Los valores de firstPage y lastPage se actualizan para la siguiente iteración.

Nota

Asegúrese de que la biblioteca iTextSharp esté correctamente instalada y referenciada en su proyecto. Reemplace "input.pdf" con la ruta real a su archivo PDF de entrada.

Una Comparación de Dividir PDF en C# Entre iTextSharp y IronPDF: Figura 4 - Archivos de salida creados

Comparación

Para comparar los dos métodos de división utilizando iTextSharp e IronPDF, evaluemos con base en varios factores:

  1. Facilidad de Uso:
    • iTextSharp: El método de iTextSharp implica crear un PdfReader, PdfDocument y PdfWriter. Calcula rangos de páginas y copia páginas a un documento nuevo. Este enfoque requiere entender la API de iTextSharp.
    • IronPDF: El método de IronPDF implica crear un PdfDocument desde el archivo fuente, copiar páginas y guardarlas en un nuevo archivo. Tiene una API más sencilla.
  2. Legibilidad del Código:
    • iTextSharp: El código involucra más pasos, lo que lo hace ligeramente más largo y potencialmente más complejo de leer.
    • IronPDF: El código es conciso y más legible debido a menos pasos y llamadas a métodos.
  3. Rendimiento:
    • iTextSharp: El rendimiento puede verse afectado por la repetida creación y destrucción de instancias de PdfDocument.
    • IronPDF: El método implica menos pasos y ofrece un mejor rendimiento debido a una copia eficiente de páginas.
  4. Uso de Memoria:
    • iTextSharp: Crear múltiples instancias de PdfDocument consumirá más memoria.
    • IronPDF: El método es más eficiente en memoria debido a su enfoque simplificado.

Conclusión

En conclusión, tanto iTextSharp como IronPDF ofrecen soluciones robustas para dividir archivos PDF en C#, cada uno con su propio conjunto de ventajas. IronPDF se destaca por su simplicidad, legibilidad y potencialmente mejor rendimiento debido a un enfoque más directo.

Los desarrolladores que buscan un equilibrio entre versatilidad y facilidad de uso pueden encontrar IronPDF como una opción atractiva. Además, IronPDF ofrece una prueba gratis. En última instancia, la elección entre iTextSharp e IronPDF depende de los requisitos del proyecto individual y el estilo de desarrollo preferido.

Por favor notaiTextSharp es una marca registrada de su respectivo propietario. Este sitio no está afiliado, respaldado o patrocinado por iTextSharp. Todos los nombres de productos, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son solo para fines informativos y reflejan información públicamente disponible en el momento de la redacción.

Preguntas Frecuentes

¿Cómo puedo dividir un PDF en C# manteniendo el formato original?

Puedes usar IronPDF para dividir un PDF en C# mientras preservas su formato. IronPDF proporciona una API simple que te permite cargar un PDF y especificar los rangos de páginas a dividir, asegurando que el formato original se mantenga en los PDFs resultantes.

¿Cuáles son las principales diferencias entre iTextSharp e IronPDF para dividir PDFs en C#?

Las principales diferencias radican en la facilidad de uso y el rendimiento. IronPDF ofrece una API más sencilla con menos pasos, lo que facilita dividir PDFs sin perder formato. Por otro lado, iTextSharp requiere crear múltiples instancias como PdfReader, PdfDocument y PdfWriter, lo que puede ser más complejo.

¿Puedo extraer páginas específicas de un PDF usando C#?

Sí, usando IronPDF, puedes fácilmente extraer páginas específicas de un PDF en C#. Al cargar el PDF y especificar los números de página deseados, IronPDF te permite extraer y guardar estas páginas como un nuevo documento PDF.

¿Cómo mejora IronPDF la legibilidad del código en comparación con otras bibliotecas PDF?

IronPDF mejora la legibilidad del código al ofrecer una API clara y concisa, reduciendo la necesidad de múltiples clases y objetos. Esto simplifica el código necesario para tareas de manipulación de PDF como dividir, conduciendo a un código más limpio y fácil de mantener.

¿Es posible probar la funcionalidad de división de PDF en C# antes de comprar una biblioteca?

Sí, IronPDF ofrece una prueba gratuita que permite a los desarrolladores probar su funcionalidad de división de PDF y otras características. Este período de prueba te permite evaluar sus capacidades y rendimiento antes de tomar una decisión de compra.

¿Qué factores se deben considerar al elegir una biblioteca PDF para dividir documentos?

Al seleccionar una biblioteca PDF, considera factores como facilidad de uso, simplicidad de la API, rendimiento y la capacidad de mantener el formato original del documento. IronPDF suele ser preferido por su API fácil de usar y rendimiento eficiente.

¿Cómo puedo instalar IronPDF en un proyecto de Visual Studio C#?

Para instalar IronPDF en un proyecto de Visual Studio C#, usa la Consola del Administrador de Paquetes NuGet con el comando Install-Package IronPdf. También puedes agregarlo a través de la UI del Administrador de Paquetes NuGet o descargarlo desde el sitio oficial de IronPDF.

¿Puede la división de un PDF afectar su calidad o formato?

Dividir un PDF con IronPDF asegura que la calidad y el formato del documento original se conserven. El procesamiento eficiente de IronPDF mantiene la integridad del contenido original.

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