COMPARACIóN DE PRODUCTOS

Comparación de la división de PDF en C# entre iTextSharp e IronPDF

Actualizado 6 de marzo, 2024
Compartir:

PDF (Formato de documento portátil) son muy utilizados para compartir y presentar documentos, y hay ocasiones en las que puede ser necesario dividir un PDF en varios archivos. Si desea extraer páginas específicas, dividir un documento grande en secciones más pequeñas o crear archivos individuales para cada capítulo, dividir PDF puede ser una tarea valiosa en varios escenarios.

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

  1. iTextSharp
  2. IronPDF

Cómo Dividir PDF en C# Usando ITextSharp

  1. Instale primero la biblioteca iText7
  2. Crear un PdfReader a partir del archivo PDF de entrada.
  3. Utilice un PdfDocument para trabajar con el contenido del PDF.
  4. Calcular el número de páginas de cada archivo dividido.
  5. Establezca los valores iniciales del intervalo de páginas.
  6. Utilice un bucle para procesar cada archivo dividido.
  7. Crea un nuevo PdfDocument para el archivo dividido actual.
  8. Copiar páginas del documento original al nuevo.
  9. Actualiza los valores del rango de páginas para la siguiente iteración.
  10. Guarde el PDF de salida finalizado.
  11. Repetir hasta crear todos los archivos:
  12. Continúa el proceso para el número especificado de archivos divididos.

IronPDF

Comparación de la división de PDF en C# entre iTextSharp e IronPDF: Figura 1 - Página web de IronPDF

IronPDF es una potente biblioteca de C# diseñada para trabajar con archivos PDF. Ofrece funciones para creando, Modificandoy extrayendo contenido de documentos PDF. Los desarrolladores pueden generar PDF desde cero, editar PDF existentes y **fusionar o dividir ellos. Además, IronPDF destaca en la conversión de contenidos HTML a formato PDF, por lo que resulta útil para generar informes o documentación. Con soporte para firmas digitales, funciones de seguridad y salida de alta calidad, IronPDF simplifica las tareas relacionadas con PDF en aplicaciones .NET.

iTextSharp

Comparación de la división de PDF en C# entre iTextSharp e IronPDF: Figura 2 - Página web de iTextSharp

iTextSharp (iText 7) es una biblioteca muy utilizada para trabajar con archivos PDF en el marco .NET. Ofrece potentes funciones para crear, modificar y extraer contenido de documentos PDF mediante programación. Los desarrolladores pueden utilizar iTextSharp para añadir texto, imágenes, tablas y otros elementos gráficos a los PDF. Además, admite el montaje de documentos, las firmas digitales y el cumplimiento de las normas de archivo y accesibilidad. iTextSharp, originalmente una biblioteca Java, fue portado a .NET y cuenta con una activa comunidad de desarrolladores y usuarios.

Instalación de la biblioteca IronPDF

Para instalar el **Paquete NuGet IronPDF utilizando Package Manager Console en Visual Studio, siga estos pasos:

  1. En Visual Studio, vaya a Herramientas -> Gestor de paquetes NuGet -> Consola del gestor de paquetes.
  2. Utilice el siguiente comando para instalar el paquete IronPDF NuGet:
    :ProductInstall

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

También puede instalar IronPDF mediante el gestor de paquetes NuGet de Visual Studio, o añadir el paquete directamente al archivo del proyecto. Otra opción es descargar el paquete desde la página sitio web oficial y añadirlo 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 utilizando Package Manager Console en Visual Studio, puede seguir estos pasos:

  1. En Visual Studio, vaya a Herramientas -> Gestor de paquetes NuGet -> Consola del gestor de paquetes.
  2. Utilice el siguiente comando para instalar el paquete NuGet iTextSharp:
Install-Package itext7

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

Dividir Documentos PDF en C# Usando IronPDF

Podemos dividir un archivo PDF en varios archivos PDF utilizando IronPDF. Ofrece una forma sencilla de conseguirlo. El siguiente código tomará el archivo PDF de origen como entrada y lo dividirá en varios archivos PDF.

static void Main(string [] args)
 {
    string file = "input.pdf"'
    //  Llame al método SplitPdf para dividir el PDF
    SplitPdfUsingIronPDF(file, "output_split", NumberOfSplitFiles);
 } 
static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
 {
     PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath);
     int firstPage = 1;
     int lastPage = 2;
     int totalPageInOneFile = sourceFile.PageCount / NumberOfSplitFiles;
     for (int i = 1; i <= NumberOfSplitFiles; i++)
     {
        //  Copiar varias páginas en un nuevo documento
        PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage,lastPage);
        string name = $@"{outputFolder}\SplitPDF_IronPDF_{i}.pdf";
        newSplitPDF.SaveAs(name);
        firstPage = lastPage + 1;
        lastPage += totalPageInOneFile;
     }
 }
static void Main(string [] args)
 {
    string file = "input.pdf"'
    //  Llame al método SplitPdf para dividir el PDF
    SplitPdfUsingIronPDF(file, "output_split", NumberOfSplitFiles);
 } 
static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int NumberOfSplitFiles)
 {
     PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath);
     int firstPage = 1;
     int lastPage = 2;
     int totalPageInOneFile = sourceFile.PageCount / NumberOfSplitFiles;
     for (int i = 1; i <= NumberOfSplitFiles; i++)
     {
        //  Copiar varias páginas en un nuevo documento
        PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage,lastPage);
        string name = $@"{outputFolder}\SplitPDF_IronPDF_{i}.pdf";
        newSplitPDF.SaveAs(name);
        firstPage = lastPage + 1;
        lastPage += totalPageInOneFile;
     }
 }
Shared Sub Main(ByVal args() As String)
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	string file = "input.pdf"' SplitPdfUsingIronPDF(file, "output_split", NumberOfSplitFiles); } static void SplitPdfUsingIronPDF(string inputPdfPath, string outputFolder, int NumberOfSplitFiles) { PdfDocument sourceFile = PdfDocument.FromFile(inputPdfPath); int firstPage = 1; int lastPage = 2; int totalPageInOneFile = sourceFile.PageCount / NumberOfSplitFiles; for(int i = 1; i <= NumberOfSplitFiles; i++) { PdfDocument newSplitPDF = sourceFile.CopyPages(firstPage,lastPage); string name = string.Format("{0}\SplitPDF_IronPDF_{1}.pdf", outputFolder, i); newSplitPDF.SaveAs(name); firstPage = lastPage + 1; lastPage += totalPageInOneFile; } }
VB   C#

Código Explicación

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 está definido para lograr esta funcionalidad.

Parámetros del método

  1. inputPdfPath: Una cadena que representa la ruta al archivo PDF de entrada (por ejemplo, "entrada.pdf").
  2. outputFolder: Una cadena que representa la carpeta de salida donde se guardarán los archivos PDF divididos (por ejemplo, "output_split").
  3. NúmeroDeArchivosDivididos: Un número 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. Representan el intervalo de páginas para la división.
  3. totalPageInOneFile se calcula dividiendo el recuento total de páginas del PDF de origen por el NumberOfSplitFiles especificado.
  4. Un bucle itera desde 1 hasta NumberOfSplitFiles:
  5. Se crea un nuevo objeto PdfDocument llamado newSplitPDF.
  6. Páginas de la primeraPágina a la últimaPágina (inclusivo) se copian del archivo de origen 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 firstPage y lastPage se actualizan para la siguiente iteración.

Nota

Debe sustituir "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 como:

Comparación de la división de 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 varios archivos más pequeños.

static void Main(string [] args)
 {
     string inputPath = "input.pdf";
     //  Ruta de los archivos PDF de salida (prefijo de los archivos generados)
     string outputPath = "output_split";
     int NumberOfSplitFiles = 3;
     //  Llame al método SplitPdf para dividir el 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))
         {
             int totalPageInOneFile = doc.GetNumberOfPages() / NumberOfSplitFiles;
             int firstPage = 1;
             int lastPage = totalPageInOneFile; //    int número de página
             for (int i = 1; i <= NumberOfSplitFiles; i++)
             {
                 string filename = $@"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf";
                 using (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename))) //  crear archivo de salida
                 {
                     //pdfDocument.get
                     doc.CopyPagesTo(firstPage, lastPage, pdfDocument);
                 }
                 firstPage = lastPage + 1;
                 lastPage += totalPageInOneFile;
             }
         }
     }
 }
static void Main(string [] args)
 {
     string inputPath = "input.pdf";
     //  Ruta de los archivos PDF de salida (prefijo de los archivos generados)
     string outputPath = "output_split";
     int NumberOfSplitFiles = 3;
     //  Llame al método SplitPdf para dividir el 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))
         {
             int totalPageInOneFile = doc.GetNumberOfPages() / NumberOfSplitFiles;
             int firstPage = 1;
             int lastPage = totalPageInOneFile; //    int número de página
             for (int i = 1; i <= NumberOfSplitFiles; i++)
             {
                 string filename = $@"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf";
                 using (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename))) //  crear archivo de salida
                 {
                     //pdfDocument.get
                     doc.CopyPagesTo(firstPage, lastPage, pdfDocument);
                 }
                 firstPage = lastPage + 1;
                 lastPage += totalPageInOneFile;
             }
         }
     }
 }
Shared Sub Main(ByVal args() As String)
	 Dim inputPath As String = "input.pdf"
	 '  Ruta de los archivos PDF de salida (prefijo de los archivos generados)
	 Dim outputPath As String = "output_split"
	 Dim NumberOfSplitFiles As Integer = 3
	 '  Llame al método SplitPdf para dividir el PDF
	 SplitPdfUsingiTextSharp(inputPath, outputPath, NumberOfSplitFiles)
End Sub
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)
'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 '    int número de página
			 For i As Integer = 1 To NumberOfSplitFiles
				 Dim filename As String = $"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf"
				 Using pdfDocument As New PdfDocument(New PdfWriter(filename)) '  crear archivo de salida
					 'pdfDocument.get
					 doc.CopyPagesTo(firstPage, lastPage, pdfDocument)
				 End Using
				 firstPage = lastPage + 1
				 lastPage += totalPageInOneFile
			 Next i
		 End Using
	 End Using
End Sub
VB   C#

Código Explicación

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

Dividir PDF con 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.

Uso de 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 utilizando la función Reader.
  3. El número total de páginas del PDF de origen 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 desde 1 hasta 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 (pdfDocumento)Las páginas están copiadas del documento original:
  3. primeraPágina a últimaPágina (inclusivo) se copian.
  4. Se guarda el PDF más pequeño.
  5. Los valores 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. Sustituya "input.pdf" por la ruta real a su archivo PDF de entrada.

Comparación de la división de PDF en C# entre iTextSharp y IronPDF: Figura 4 - Archivos de salida creados

Comparación

Para comparar los dos métodos de división con iTextSharp y IronPDF, vamos a evaluarlos en función de varios factores:

  1. **Facilidad de uso
    • **El método iTextSharp consiste en crear un PdfReader, un PdfDocument y un PdfWriter. Calcula los intervalos de páginas y las copia en un nuevo documento. Este enfoque requiere la comprensión de la API iTextSharp.
    • IronPDF: El método IronPDF consiste en crear un documento PDF a partir del archivo de origen, copiar las páginas y guardarlas en un nuevo archivo. Tiene una API más sencilla.
  2. **Legibilidad del código
    • iTextSharp: El código implica 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 gracias al menor número de pasos y llamadas a métodos.
  3. Desempeño:
    • **El rendimiento puede verse afectado por la creación y eliminación repetida de instancias de PdfDocument.
    • IronPDF: El método implica menos pasos y ofrece un mejor rendimiento gracias a la copia eficiente de páginas.
  4. Uso de memoria:
    • iTextSharp: La creación de 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 sólidas para dividir archivos PDF en C#, cada una con su propio conjunto de ventajas. IronPDF destaca por su sencillez, legibilidad y rendimiento potencialmente mejor gracias a un enfoque más directo.

Los desarrolladores que busquen un equilibrio entre versatilidad y facilidad de uso pueden encontrar en IronPDF una opción convincente. Además, IronPDF ofrece un prueba gratuita. En última instancia, la elección entre iTextSharp e IronPDF depende de los requisitos de cada proyecto y del estilo de desarrollo preferido.

< ANTERIOR
PDFsharp vs iTextSharp (Comparación de bibliotecas PDF C#)
SIGUIENTE >
Comparación entre IronPDF y PDFSharpCore

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123