Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
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#.
Instale primero la biblioteca iText7
Crear un PdfReader a partir del archivo PDF de entrada.
Utilice un PdfDocument para trabajar con el contenido del PDF.
Calcular el número de páginas de cada archivo dividido.
Establezca los valores iniciales del intervalo de páginas.
Utilice un bucle para procesar cada archivo dividido.
Crea un nuevo PdfDocument para el archivo dividido actual.
Copiar páginas del documento original al nuevo.
Actualiza los valores del rango de páginas para la siguiente iteración.
Guarde el PDF de salida finalizado.
Repetir hasta crear todos los archivos:
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 (iText 7) es una biblioteca muy utilizada para trabajar con archivos PDF en el .NET Framework. 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.
Para instalar el **Paquete NuGet IronPDF utilizando Package Manager Console en Visual Studio, siga estos pasos:
En Visual Studio, vaya a Herramientas -> Gestor de paquetes NuGet -> Consola del gestor de paquetes.
: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.
Para instalar iTextSharp utilizando Package Manager Console en Visual Studio, puede seguir estos pasos:
En Visual Studio, vaya a Herramientas -> Gestor de paquetes NuGet -> Consola del gestor de paquetes.
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.
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"'
// Call the SplitPdf method to split the 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++)
{
// Copy multiple pages into a new document
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"'
// Call the SplitPdf method to split the 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++)
{
// Copy multiple pages into a new document
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; } }
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.
inputPdfPath: Una cadena que representa la ruta al archivo PDF de entrada (por ejemplo, "entrada.pdf").
outputFolder: Una cadena que representa la carpeta de salida donde se guardarán los archivos PDF divididos (por ejemplo, "output_split").
Dentro del método SplitPdfUsingIronPDF:
Se crea un objeto PdfDocument llamado sourceFile cargando el PDF desde el inputPdfPath especificado.
Se inicializan dos variables enteras, firstPage y lastPage. Representan el intervalo de páginas para la división.
totalPageInOneFile se calcula dividiendo el recuento total de páginas del PDF de origen por el NumberOfSplitFiles especificado.
Un bucle itera desde 1 hasta NumberOfSplitFiles:
Se crea un nuevo objeto PdfDocument llamado newSplitPDF.
Páginas de la primeraPágina a la últimaPágina (inclusivo) se copian del archivo de origen a newSplitPDF.
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.
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:
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";
// Output PDF files path (prefix for the generated files)
string outputPath = "output_split";
int NumberOfSplitFiles = 3;
// 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))
{
int totalPageInOneFile = doc.GetNumberOfPages() / NumberOfSplitFiles;
int firstPage = 1;
int lastPage = totalPageInOneFile; // int pagenumber
for (int i = 1; i <= NumberOfSplitFiles; i++)
{
string filename = $@"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf";
using (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename))) // create output file
{
//pdfDocument.get
doc.CopyPagesTo(firstPage, lastPage, pdfDocument);
}
firstPage = lastPage + 1;
lastPage += totalPageInOneFile;
}
}
}
}
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;
// 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))
{
int totalPageInOneFile = doc.GetNumberOfPages() / NumberOfSplitFiles;
int firstPage = 1;
int lastPage = totalPageInOneFile; // int pagenumber
for (int i = 1; i <= NumberOfSplitFiles; i++)
{
string filename = $@"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf";
using (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename))) // create output file
{
//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"
' Output PDF files path (prefix for the generated files)
Dim outputPath As String = "output_split"
Dim NumberOfSplitFiles As Integer = 3
' Call the SplitPdf method to split the 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 pagenumber
For i As Integer = 1 To NumberOfSplitFiles
Dim filename As String = $"{outputFolder}\SplitPDF_iTextSharp_{i}.pdf"
Using pdfDocument As New PdfDocument(New PdfWriter(filename)) ' create output file
'pdfDocument.get
doc.CopyPagesTo(firstPage, lastPage, pdfDocument)
End Using
firstPage = lastPage + 1
lastPage += totalPageInOneFile
Next i
End Using
End Using
End Sub
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.
La funcionalidad principal está encapsulada en el método SplitPdfUsingiTextSharp.
Dentro del método SplitPdfUsingiTextSharp:
Se crea un objeto PdfReader llamado Reader cargando el PDF desde el inputPdfPath especificado.
Se inicializa un objeto PdfDocument llamado DOC utilizando la función Reader.
Un bucle itera desde 1 hasta NumberOfSplitFiles:
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.
Dentro de este nuevo documento PDF (pdfDocumento)Las páginas están copiadas del documento original:
primeraPágina a últimaPágina (inclusivo) se copian.
Se guarda el PDF más pequeño.
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.
Para comparar los dos métodos de división con iTextSharp y IronPDF, vamos a evaluarlos en función de varios factores:
**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.
**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.
Desempeño:
**El rendimiento puede verse afectado por la creación y eliminación repetida de instancias de PdfDocument.
Uso de memoria:
iTextSharp: La creación de múltiples instancias de PdfDocument consumirá más memoria.
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.
9 productos API .NET para sus documentos de oficina