Professional Documents
Culture Documents
aspx
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).
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.
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:
11/11/2016 5:35 p. m.
2 de 2
http://www.devjoker.com/print/Articulos/374/Articulos.aspx
12,
iTextSharp.text.Font.UNDERLINE ));
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.