Normalmente, en los sistemas que desarrollamos, nos encontramos con la necesidad de exportar algún tipo de información ya sea un archivo de texto, de excel o PDF. Generar archivos de texto es sumamente fácil ya que .Net provee librerías para hacerlo pero ¿qué pasa cuando necesitamos exportar información a formatos mas complejos como excel o PDF? Hay una excelente librería para crear y manipular archivos de excel llamada EPPlus. Estaré hablando de ella mi próxima publicación pero hoy voy a tocar específicamente cómo generar archivos PDF ya que este formato es estándar y no es modificable. Para esto usaremos iTextSharp.
iTextSharp es una librería, de código abierto (open source) y específicamente para .Net, que nos permite crear y modificar documentos PDF. Si usted prefiere programar en Java, también se puede beneficiar de iText para Java y Android. Estos son los enlaces para descargar las librerías:
- .Net: http://sourceforge.net/projects/itextsharp/
- Java o Android: http://sourceforge.net/projects/itext/
Así que queremos crear un documento en PDF, ponerle data y, finalmente, almacenarlo en nuestra computadora.Ok, primero, descargamos la librería y hacemos referencia a ella en nuestro proyecto de Visual Studio. Ahora, ¡manos a la obra!
// Creamos el documento con el tamaño de página tradicional Document doc = new Document(PageSize.LETTER); // Indicamos donde vamos a guardar el documento PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(@"C:\prueba.pdf", FileMode.Create)); // Le colocamos el título y el autor // **Nota: Esto no será visible en el documento doc.AddTitle("Mi primer PDF"); doc.AddCreator("Roberto Torres"); // Abrimos el archivo doc.Open();
En el pedazo de código arriba creamos el documento PDF, con las medidas de una página tradicional, le dijimos que guardara el documento en C:\ con el nombre prueba.pdf y le colocamos el título y el autor del documento. Finalmente lo abrimos para comenzar a añadirle información.
// Creamos el tipo de Font que vamos utilizar iTextSharp.text.Font _standardFont = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 8, iTextSharp.text.Font.NORMAL, BaseColor.BLACK); // Escribimos el encabezamiento en el documento doc.Add(new Paragraph("Mi primer documento PDF")); doc.Add(Chunk.NEWLINE); // Creamos una tabla que contendrá el nombre, apellido y país // de nuestros visitante. PdfPTable tblPrueba = new PdfPTable(3); tblPrueba.WidthPercentage = 100; // Configuramos el título de las columnas de la tabla PdfPCell clNombre = new PdfPCell(new Phrase("Nombre", _standardFont)); clNombre.BorderWidth = 0; clNombre.BorderWidthBottom = 0.75f; PdfPCell clApellido = new PdfPCell(new Phrase("Apellido", _standardFont)); clApellido.BorderWidth = 0; clApellido.BorderWidthBottom = 0.75f; PdfPCell clPais = new PdfPCell(new Phrase("País", _standardFont)); clPais.BorderWidth = 0; clPais.BorderWidthBottom = 0.75f; // Añadimos las celdas a la tabla tblPrueba.AddCell(clNombre); tblPrueba.AddCell(clApellido); tblPrueba.AddCell(clPais); // Llenamos la tabla con información clNombre = new PdfPCell(new Phrase("Roberto", _standardFont)); clNombre.BorderWidth = 0; clApellido = new PdfPCell(new Phrase("Torres", _standardFont)); clApellido.BorderWidth = 0; clPais = new PdfPCell(new Phrase("Puerto Rico", _standardFont)); clPais.BorderWidth = 0; // Añadimos las celdas a la tabla tblPrueba.AddCell(clNombre); tblPrueba.AddCell(clApellido); tblPrueba.AddCell(clPais);
Una vez terminemos de ponerle data al documento, no queda otra cosa que cerrar el archivo y ver nuestro resultado final.
// Finalmente, añadimos la tabla al documento PDF y cerramos el documento doc.Add(tblPrueba); doc.Close(); writer.Close();
iTextSharp es una excelente librería, de libre de costo, que nos permite crear y modificar documentos PDF y añadirle todo tipo de información (incluyendo imágenes), lo que lo hace una herramienta, casi necesaria, en nuestro desarrollo.
El código del tutorial puede ser encontrado aquí: iTextSharpDemo
Un ejemplo del resultado puede ser encontrado aquí: prueba.pdf
Publicaciones relacionadas
Encuentra más ayuda sobre iTextSharp en mis otras publicaciones:
Roberto Torres Rodríguez
Related posts
28 Comments
Deja una respuesta Cancelar la respuesta
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)
[…] Para más información sobre iTextSharp puedes visitar mi publicación: C#: Creando archivos PDF con iTextSharp […]
Hola Roberto Buenas tardes, como podría crear un pdf con datos de un archivo HTML
hola amigo, como podria convertir un archivo doc, a PDF ?
Saludos amigo, estaré haciendo una publicación próximamente sobre cómo convertir archivos de tipo doc a PDF.
muchas gracias brother por la guia sobre itextSharp, no hay mucha informacion en el internet de eso, siga creciendo en tu comunidad
Gracias amigo! Siempre a la orden.
Hola esta muy bueno tu tutorial, podrias hacer una explicacion de como convertir archivos .doc y .txt a pdf? seria genial
Gracias! De seguro haré una publicación sobre eso.
Hola , estoy leyendo este artículo, porque hasta ahora leía PDFs en el Kindle sin problemas. Pero hoy he itentado leer dos PDFs y solo se ve el encabezado y el pie. Pero no el texto central. Y eso en todas las páginas. Lo único que he visto diferente con otros PDFs, es que pone que estos son itextsharp. Sabrías que podrñia hacer para solucionar el problema?
Gracias
Hola muy bueno tu post pero yo tengo una duda como puedo hacer un salto de linea este es el código que uso, vb
Dim cb As PdfContentByte = writer.DirectContent
Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.COURIER_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
cb.SetFontAndSize(bf, 20)
cb.BeginText()
cb.SetTextMatrix(50, 790)
cb.ShowText(“Nombre: ” & Me.TextBox1.Text)
cb.ShowText(“DATOS: ” & Me.TextBox2.Text)
cb.EndText()
documento.Close()
Catch ex As Exception
MessageBox.Show(“Error en la genearacion”, “error”, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Gracias Juan! Para eso uso este pedazo de código: document.add( Chunk.NEWLINE );
document es una instancia del objeto Document de iTextsharp. Espero que esto te ayude.
buenas tardes
Estoy generando un certificado y tiene algunas images con como puedo incluir imágenes en el pdf con itextsharp?
Hola Javier, gracias por tu apoyo. Para incluir imágenes en archivos PDF con iTextSharp puedes ver mi publicación https://desarrolladores.me/2014/06/itextsharp-como-insertar-imagenes/
gracias muy útil este componente
A la orden. ?
hola,
como puedo incluir imagenes
Hola.
estoy adicionando este texto:
doc.Add(new Paragraph(str.PadRight(150) + “Hola Mundo!!”));
la pregunta es como le cambio el tamaño de la fuente antes de agregarlo?
¡Hola!
Para esto es que utilizamos los objetos tipo Font. Los usamos de esta manera:
Si te fijas, el parámetro #2, que en ejemplo dice 8, es el tamaño de la letra. Para utilizarlo al crear un nuevo párrafo es así:
Necesito imprimir mucha información como un reporte, INFORMACION DESDE BASES DE DATOS….
iTextSharp es excelente para ese tipo de tarea.
Buenas noches , saludos cordiales:
De casualidad has utilizado: Syncfusion para crear pdf
https://www.syncfusion.com/pdf-framework/net
Para hacer pdf ¿?
De paso te dejo la documentación.
https://help.syncfusion.com/file-formats/pdf/overview
¡Saludos! Gracias por la sugerencia. En realidad lo he visto pero nunca he tenido la oportunidad de utilizarlo.
La ventaja que tiene iTextSharp es que es libre de costo ya que es mantenido por la comunidad de desarrolladores.
Hola! Excelente post.
Tengo una duda, estoy generando PDF’s desde consultas a mi DB… Existe una manera de agrear Encabezado y pie de pagina ? El encabezado es una imagen y el pie de pagina es una tabla con bordes blancos para que no se vean las lineas… El contenido del cuerpo son tablas y otros pequeños segmentos de HTML () claro estas ultimas las puedo limpiar con la funcion remplace.. Mi duda es si va a respetar los formatos de justificacion dentro de los y por ultimo ya para terminar, lo estaba haciendo con Crystal Reports pero no me sirve ya que no me respeta el texto justificado en los segmentos de HTML… agradezco tu ayuda!
Saludos!
¡Hola Josua! Espero que esta publicación te haya ayudado. Definitivamente, es posible agregar un encabezado y pie de página con iTextSharp. Se puede hacer de varias maneras pero la que recomiendo es hacer una clase que haga “override” de un método que tiene iTextSharp llamado OnEndPage. Te dejo un ejemplo aquí:
Puedes modificar la clase para cumpla con tus requerimientos. Luego solo queda añadir una instancia de esta clase a los eventos de página del PdfWriter. Ejemplo:
Espero que te ayude.
Hola, interesante lo que compartes, felicitaciones, tengo una consulta: como podría mover la ubicación de una firma digital?
muchas gracias por el curso de iTextSharp es una información muy importante en el desarrollo Empresarial.
Hola Roberto. He desarrollado una aplicación con asp net y C#, en la cual hago reportes con PrintDocument . Cuando la ejecuto en mi PC no hay problemas al momento de imprimir. Pereo cuando lo hago desde un hosting no se puede imprimir, al no tener instalada ninguna impresora.Por eso veo muy interesante este tutorial, por el cual te felicito. Mi consulta es como agregar información al documento PDF contenida en mi base de datos. Gracias por anticipado.
Saludos,
Tengo una duda puedo usar itextSharp en proyectos cerrados, proyecto que vaya a vender?, la licencia me lo permite?