InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
También puedes ver ...
Creando cadenas de conexión ConnectionStrings en .net 3.5 o visual Studio 2008 usando SqlConnectionStringBuilder
Migración de WSE a WCF (Web Services de 2005 a 2008)
TransactionScope - Simplificando el trabajo con transacciones.
LinQ To SQL - Un ejemplo sencillo
Cómo activar Intelisense (autocompletado) en el Web.config
Leer un campo XML de SQL Server 2005 con C#
TripleDES - Un ejemplo practico en C#
Mostrar un GridView dentro de un DataList
String.Format
Métodos Extensores: INNER JOIN

Afiliados
La Web del programador
MundoProgramacion


 

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


 Versión para imprimir  Foros de consulta

 
Muy lento por Java4ever
Respuesta recibida el [23/10/2008 07:30:20]
Sigue siendo más complicado y menos potente que el uso de JasperReports en Java. Directamente en plantillas .jrxml se monta la estructura del documento y luego se rellena de datos desde las clases, olvídandote de todo lo demás porque el formato de la plantilla ya está creado en el JRXML. 

Como siempre, dando pasos hacia atrás, es como si ahora volviésemos en Java a pintar los html línea a línea desde un Servlet. No tiene lógica hacer un PDF línea a línea

 
El articulo es una introducció... por devjoker
Respuesta recibida el [23/10/2008 04:57:15]
El articulo es una introducción a la libreria iTextSharp, cuyas posibilidades van mucho más alla de la simple generación de archivos. Manipular archivos existentes, obtener metainformación,leerlos para construir un indice, combinar varios archivos ... - por poner algunos ejemplos. En este tipo de casos es necesaria la potencia de una librería como la que presentamos en este articulo.
Por supuesto, si lo que quieres es realizar un simple informe es mejor que utilices una herramienta de informes - como Reporting Services, Crystal Reports, Actuate ... hay muchas y muy buenas.

 
otras ventajas de iTextSharp por felix
Respuesta recibida el [12/11/2008 02:24:44]
No solo eso te permite iTextSharp.. tambien te permite colocar firmas digitales imagenes, pdf con objetos como radio button, dropdown list.

Realmente iTextSharp es muy versatil

 
COMO ALAMCENARLO EN BDD por OPERA
Respuesta recibida el [13/11/2008 03:15:48]
USTED PODRIA AYUDARME A ALMACENAR ESTE TIPO DE ARCHIVO EN UNA BDD DE SQL SERVER, POR FAVOR...........


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



 Versión para imprimir

Generar archivos PDF con C#
Autor: Pedro Herrarte Sánchez
Visitas: 2577 Fecha de publicación: 18/09/2008
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, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, 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).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 305 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 137 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 101 | Comentarios: 5 | Archivo: Articulos
Categorias: TFS
Visitas: 430 | Comentarios: 4 | Archivo: Articulos
Categorias: Transact-SQL|LinQ
Visitas: 1448 | Comentarios: 6 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 239 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 611 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 2577 | Comentarios: 4 | Archivo: Articulos
Categorias: C#
Visitas: 464 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 1072 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista

Útimos temas recibidos en los foros ...
Enviar un email con C# utilizando .Net FrameWork 2.0 con logo... por Moises ... [ASP.NET] 1 21/11/2008
Crystal reports XI Release 2 y asp.net por mvargas ... [ASP.NET] 0 21/11/2008
Enviar un email con C# utilizando .Net FrameWork 2.0 por Moises ... [C#] 0 21/11/2008
Cuestión de BFILE. por Megatron ... [ORACLE] 0 21/11/2008
Enviar email por Dol ... [ASP.NET] 5 21/08/2007
*******PREGUNTA********: por T.S.U.En Informatíca ... [Visual Basic 6.0] 5 17/03/2008
Programar tareas en oracle. por Rodrigo ... [ORACLE] 0 21/11/2008
fechas con datatimepicker por peyin ... [Visual Basic .NET] 3 20/11/2008
agregar datos de un gridview a un textbox por jhors ... [ASP.NET] 3 19/09/2007
Select de sql en c# por Stuart ... [C#] 1 20/11/2008
Manual en Español de SQL Navigator for Oracle por Maira ... [ORACLE] 12 30/03/2008
Como mandar mensaje a Celular por Pako ... [C#] 40 13/03/2007

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
31/03/2006 Fundamentos de PL/SQL    forma parte de...Tutorial PL/SQL
11/10/2006 Métodos    forma parte de...Tutorial C#
22/10/2005 Vistas    forma parte de...Tutorial SQL
13/07/2006 Paquetes en PL/SQL    forma parte de...Tutorial PL/SQL
10/07/2006 Funciones en PL/SQL    forma parte de...Tutorial PL/SQL
10/07/2006 Subprogramas en bloques anónimos    forma parte de...Tutorial PL/SQL
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL
19/10/2005 Una clase sencilla para encriptar cadenas
22/10/2005 Indices    forma parte de...Tutorial SQL
16/10/2006 Redefinición de operadores    forma parte de...Tutorial C#

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]