Normalmente una aplicación puede generar varios PDF que mostrar al usuario y en vez de enviarle n documentos la mejor solución es juntarlos en un solo archivo.
Para realizar esta tarea vamos a utilizar la biblioteca iTextSharp, la licencia que tiene es gratuita y se puede utilizar para cualquier proyecto.
Hay varias formas de obtener la misma pero sin duda la mejor forma de obtener esta biblioteca es bajarla a través de NuGet.Si no lo tenemos instalado NuGet desde este enlace se puede instalar: NuGet.
Desde la ventana de NuGet buscamos iTextSharp y nos bajamos la biblioteca y que la añada a la aplicación que estamos desarrollando.
También lo podemos hacer desde la consola de NuGet, para ello accedemos a la consola de NuGet y ejecutamos el siguiente comando:
Install-Package itextsharp
Con el comando anterior se descarga de la web la última versión de la libreria y le añade la referencia a nuestro proyecto, con lo cual ya se puede usar sin problemas.
El codigo para juntar los archivos es bastante sencillo:
Para realizar esta tarea vamos a utilizar la biblioteca iTextSharp, la licencia que tiene es gratuita y se puede utilizar para cualquier proyecto.
Hay varias formas de obtener la misma pero sin duda la mejor forma de obtener esta biblioteca es bajarla a través de NuGet.Si no lo tenemos instalado NuGet desde este enlace se puede instalar: NuGet.
Desde la ventana de NuGet buscamos iTextSharp y nos bajamos la biblioteca y que la añada a la aplicación que estamos desarrollando.
También lo podemos hacer desde la consola de NuGet, para ello accedemos a la consola de NuGet y ejecutamos el siguiente comando:
Install-Package itextsharp
Con el comando anterior se descarga de la web la última versión de la libreria y le añade la referencia a nuestro proyecto, con lo cual ya se puede usar sin problemas.
El codigo para juntar los archivos es bastante sencillo:
var document = new Document(); var ms = new MemoryStream(); string[] Lista = { "doc1.pdf", "doc2.pdf" }; var pdfCopy = new PdfCopy(document, ms); document.Open(); foreach (var item in Lista) { var pdfReader = new PdfReader(item); var n = pdfReader.NumberOfPages; for (var page = 0; page < n; ) { pdfCopy.AddPage(pdfCopy.GetImportedPage(pdfReader, ++page)); } pdfCopy.FreeReader(pdfReader); } pdfCopy.Flush(); document.Close(); ms.WriteTo(new FileStream("documentoJutar.pdf", FileMode.OpenOrCreate));
Lo que se hace en el codigo anterior es crear un Docuemnt con la librería de iTextSharp, y un Memory Stream para ir escribiendo en memoria los documentos que vamos a juntar.
Ponemos la lista de documentos e inicializamos el objeto PdfCopy que es el que hara el trabajo.
Con un for se recorren los archivos y se van copiando página a página.
Una vez acabado se cierra el documento y se escribe en disco lo que hemos hecho en memoria.
Así de simple y sencillo es juntar ficheros PDF con C#. Espero sea util.
4 comentarios:
No funciona ...
Hola Santiago, y ¿qué es lo que no funciona?
como hago para escoger varios pdf de una carpeta en una carpeta en mi escritorio por medio de codigo.
Puedes usar lo siguiente:
string path = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\carpeta\";
string[] dirs = Directory.GetFiles(path, "*.pdf");
Un saludo y espero que te sea útil.
Publicar un comentario