Generar archivos PDF con C#

En este articulo vamos a  ver como generar documentos PDF con C# directamente desde código. Antes de nada, dar la gracias a Raul - compañero de trabajo - por enseñarme que existia iTextSharp - la librería que vamos a utilizar para este ejemplo. 

Normalmente, cuando queremos generar un documento PDF recurrimos a una impresara virtual PDF - como explicamos en este artículo:
http://www.devjoker.com/contenidos/Articulos/311/DoPDF-Crea-archivos-PDF-facilmente.aspx,
pero en muchas ocasiones necesitamos hacerlo directamente desde código.

Ya hemos dicho que vamos a utilizar iTextSharp - una librería que proviene del mundo Java (iText), pero que ha sido portada a C# y que podemos descargar desde el siguiente enlace:
http://sourceforge.net/projects/itextsharp/

En este ejemplo hemos utilizado C# 3.0 ( Visual Studio 2008 ) - es decir .Net Framework 3.5 - , pero la librería funciona correctamente con cualquier versión de .Net, incluido el Framework 1.0.

Vamos a obviar temas de permisos de escritura en los directorios y esas cosas, asuminos que tenemos los permisos necesarios para escribir en disco y esas cosas (aunque como veremos más adelante también podríamos usar un MemoryStream).

Mi primer documento PDF.

Lo primero que tenemos que hacer es decargar la librería desde el enlace que hemos indicado y añadir la referencia a nuestro proyecto: itextsharp.dll.

En mi caso he creado un proyecto de tipo Windows Forms, y he diseñado un formulario con un único botón que servira para crear el documento pdf.

Tenemos que incluir las siguientes directivas using a nuestro formulario:

 

using iTextSharp.text;

using iTextSharp.text.pdf;

using System.IO;

Crear documentos PDF es realmente simple, vemos como y lo explicamos un poco más adelante.

 

private void button1_Click(object sender, EventArgs e)

{

Document document = new Document();

PdfWriter.GetInstance(document,

new FileStream("devjoker.pdf",

FileMode.OpenOrCreate));

document.Open();

document.Add(new Paragraph("Este es mi primer PDF al vuelo"));

document.Close();

}

Con esto ya tenemos nuestro primer PSF. Vamos a ver que hemos hecho ...

  • Creamos un objeto de tipo Document. Es nuestro PDF.
  • Invocamos al método estatico GetInstance de la clase PdfWriter - como argumentos recibe el documento que acabamos de crear y un Stream. En este caso utilizamos un FileStream pero podríamos haber usado cualquier Stream que admita escritura como por ejemplo MemoryStream. 
  • Abrimos el documento con el método Open.
  • Le añadimos un parrafo con Add. Debemos darnos cuenta que el método Add recibe como parametro una interface -IElement. Esto nos va a simplificar enormemente el trabajo.
  • Cerramos el documento con Close.

¡Que dificil! Con esto ya tenemos creado el archivo en la ruta indicada al FileStream (en mi caso la misma ruta que el ejecutable).

La librería es bastante amplia y permite controlar casi todo. Por ejemplo, para modificar la fuente y el tamaño del parrafo solo tendremos que utilizar el siguiente código:

 

Chunk chunk = new Chunk("Texto subrayado",

FontFactory.GetFont("ARIAL",

12,

iTextSharp.text.Font.UNDERLINE ));

 

document.Add(new Paragraph(chunk ));

Como hemos comentado antes, el método Add recibe como parámetro una interface - IElement . Todos los objetos que podemos añadir al documento implementan esta interface por lo que la manera de añadir elementos al documento es siempre la misma. Por ejemplo, insertar una imagen en el documento es igual de simple que un parrafo, solo cambiamos el objeto Paragraph pòr un objeto Image (no confundir con System.Drawing.Image!):

 

iTextSharp.text.Image jpg =

iTextSharp.text.Image.GetInstance(@"C:\...\ghostsandgoblins.jpg");

jpg.Alignment = iTextSharp.text.Image.MIDDLE_ALIGN;

document.Add(jpg);

Solo hemos visto una mínima para de la funcionalidad que ofrece la librería, pero espero que sea suficiente como para que os pique la curiosidad. Podemos encontrar un completo tutorial de como usar la librería en esta dirección:http://itextsharp.sourceforge.net/tutorial/index.html

Saludos, DJK

Pedro  Herrarte  Sánchez
Generar archivos PDF con C#
Pedro Herrarte Sánchez

Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación. Posee mas de diez años de experiencia trabajando para las principales empresas de España. Es especialista en tecnologías .NET, entornos Web (ASP.NET, ASP.NET MVC,jQuery, HTML5), bases de datos (SQL Server y ORACLE) e integración de sistemas. Es experto en desarrollo (C#, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE). Pedro es MCP y MAP 2012, es fundador, diseñador y programador de www.devjoker.com..
Fecha de alta:18/09/2008
Última actualizacion:18/09/2008
Visitas totales:143352
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com