En el caso que tengamos la necesidad crear un solo archivo PDF compuesto de 2 o más PDFs independientes podemos utilizar la herramienta iTextSharp.
Por ejemplo, supongamos que tenemos un sistema y queremos exportar lo que el usuario tiene en pantalla. Pero además de exportar la información que el usuario necesita, también queremos añadirle una portada al documento para darle un toque elegante al documento que el usuario está por descargar.
Cómo unir archivos PDF
Con iTextSharp es relativamente sencillo poder lograr esta unión de archivos PDF. La manera de hacerlo es la siguiente:
- Necesitamos leer el primer archivo que queremos utilizar. Si seguimos el ejemplo anterior esta sería la portada del documento final.
// Abrimos el primer documento existente PdfReader reader = new PdfReader("portada.pdf");
- Creamos un nuevo documento PDF y añadimos la portada.
// Creamos el nuevo PDF MemoryStream m = new MemoryStream(); Document pdf = new Document(PageSize.LETTER); PdfWriter writer = PdfWriter.GetInstance(pdf, m);// Instrucción para que el PDF imprima correctamente según el tamaño de papel seleccionado. writer.AddViewerPreference(PdfName.PICKTRAYBYPDFSIZE, PdfBoolean.PDFTRUE);// Añadimos los atributos del nuevo PDF pdf.AddAuthor("Autor"); pdf.AddTitle("Titulo del nuevo PDF"); pdf.AddCreator("Creador del documento"); pdf.AddCreationDate(); // Abrimos el documento pdf.Open(); writer.PageEvent = new PdfFooter(); PdfContentByte cb = writer.DirectContent; // Aquí declaramos el tipo de letra, tamaño y color que deseamos utilizar BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); cb.SetColorFill(BaseColor.BLACK); cb.SetFontAndSize(bf, 12); // Creamos una nueva página e importamos el contenido del paso #1: portada.pdf PdfImportedPage page = writer.GetImportedPage(reader, 1); cb.AddTemplate(page, 0, 0);
- Añadimos contenido dinámico, como normalmente hacemos, o continuamos añadiendo archivos PDF ya creados. En el caso que no tengas muchas experiencia con iTextSharp, puedes ver la publicación: Creando archivos PDF con iTextSharp.
- Cerramos el documento y lo guardamos.
// Cerramos el nuevo archivo PDF pdf.Close(); writer.Close();// En el caso que querramos guardarlo en una carpeta byte[] bytArr = m.ToArray(); using (FileStream fs = File.Create("carpetaYNombreDelNuevoPDF.pdf")) { fs.Write(bytArr, 0, (int)bytArr.Length); }// En el caso que estemos usando ASP.Net y querramos que el usuario lo pueda descargar HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ContentType = "application/pdf"; HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + "carpetaYNombreDelNuevoPDF.pdf"); HttpContext.Current.Response.BinaryWrite(m.GetBuffer()); HttpContext.Current.Response.End();
Y de esta manera podemos unir todos los archivos que necesitemos, más añadir contenido dinámico a nuestros archivos PDF.
Espero que les haya servido esta publicación. Cualquier duda o pregunta me la pueden dejar en el área de los comentarios.
¡Hasta la próxima!
Publicaciones relacionadas:
Roberto Torres Rodríguez
Related posts
Publicaciones Populares
Categorías
- ASP.Net (6)
- C# (10)
- CSS (5)
- DIY (1)
- General (5)
- JavaScript (8)
- JQuery (6)
- Kodi (antes XBMC) (4)
- Nuevo (3)
- Raspberry Pi (2)
- SQL Server (15)
- Uncategorized (1)
- Vue.js (2)
- Wordpress (1)