You are on page 1of 2

http://www.devjoker.com/print/Articulos/374/Articulos.

aspx

Generar archivos PDF con C#

1 de 2

www.devjoker.com
Generar archivos PDF con C#
En este articulo vamos a ver como generar documentos PDF con C# directamente desde cdigo. Antes de nada, dar la gracias a Raul - compaero de trabajo por ensearme que existia iTextSharp - la librera que vamos a utilizar para este ejemplo.
Normalmente, cuando queremos generar un documento PDF recurrimos a una impresara virtual PDF - como explicamos en este artculo:
http://www.devjoker.com/contenidos/Articulos/311/DoPDF-Crea-archivos-PDF-facilmente.aspx,
pero en muchas ocasiones necesitamos hacerlo directamente desde cdigo.
Ya hemos dicho que vamos a utilizar iTextSharp - una librera 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 librera funciona correctamente con cualquier versin 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 ms adelante tambin podramos usar un MemoryStream).

Mi primer documento PDF.


Lo primero que tenemos que hacer es decargar la librera desde el enlace que hemos indicado y aadir la referencia a nuestro proyecto: itextsharp.dll.
En mi caso he creado un proyecto de tipo Windows Forms, y he diseado un formulario con un nico botn 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 ms 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 mtodo 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 podramos haber usado cualquier Stream que admita escritura como por ejemplo MemoryStream.
Abrimos el documento con el mtodo Open.
Le aadimos un parrafo con Add. Debemos darnos cuenta que el mtodo 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 librera es bastante amplia y permite controlar casi todo. Por ejemplo, para modificar la fuente y el tamao del parrafo solo tendremos que utilizar el
siguiente cdigo:

Chunk chunk = new Chunk("Texto subrayado",


FontFactory.GetFont("ARIAL",

11/11/2016 5:35 p. m.

Generar archivos PDF con C#

2 de 2

http://www.devjoker.com/print/Articulos/374/Articulos.aspx

12,
iTextSharp.text.Font.UNDERLINE ));

document.Add(new Paragraph(chunk ));

Como hemos comentado antes, el mtodo Add recibe como parmetro una interface - IElement . Todos los objetos que podemos aadir al documento
implementan esta interface por lo que la manera de aadir 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 pr 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 mnima para de la funcionalidad que ofrece la librera, pero espero que sea suficiente como para que os pique la curiosidad. Podemos
encontrar un completo tutorial de como usar la librera en esta direccin:http://itextsharp.sourceforge.net/tutorial/index.html
Saludos, DJK

11/11/2016 5:35 p. m.

You might also like