miércoles, 14 de noviembre de 2012

Crear reporte con ItextSharp en C# sin tabla



Veremos como crear un reporte PDF con ITextSharp en C# sin el uso de tablas, esto dejara el texto lineal y abra que ir acomodándolo. Para ello necesitamos importar la librería de ItextSharp a nuestro proyecto, podemos descargarlo de la red o bien desde el mismo vs a partir de la versión 2010 con el administrador de paquetes NuGet y luego agregar la referencia con  using iTextSharp.text.

Primero empezamos declarando una variable de tipo document en el cual le agregamos el tamaño de nuestro documento en este caso es tipo carta, podemos elegir de otros tipos como A4, oficio, etc.
  Document doc = new Document(iTextSharp.text.PageSize.LETTER);

Definimos al autor y el tipo de palabras claves al igual que los margenes

  doc.AddAuthor("Gustavo Ortiz Gamez");
  doc.AddKeywords("pdf, PdfWriter; Documento; iTextSharp");
  doc.SetMargins(10.0f, 10.0f, 10.0f, 10f);

Aquí ocupamos una variable de tipo string con la ruta y nombde del archivo

  string rut = @"C:\doc.pdf";

Procedemos a crear el documento en la ruta antes establecida
  PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream(rut, FileMode.Create));
     
Abrimos el documento a ocupar
      doc.Open();

Y empezamos a escribir nuestro texto para lo cual declaramos una variable de tipo paragraph en la cual vamos a definir el formato de nuestro texto, como alignment para definir la justificacion, Font para el tipo y tamañao de letra, y con Add agregamos el texto que vamos a ocupar
Paragraph paragraph = new Paragraph();
      paragraph.Alignment = Element.ALIGN_RIGHT;
      paragraph.Font = FontFactory.GetFont("Arial", 9);
      paragraph.Add("Esto es una prueba);

Y solo basta con agregar esta variable paragraph a nuestro documento.
Para continuar agregando texto es necesario ir agregando nuevos paragraph
     
doc.Add(paragraph);

Limpianos nuestro paragraph por si queremos definir otro tipo de formato o tipo de letra 
paragraph.Clear();
      paragraph.Font = FontFactory.GetFont("Arial", 14, Font.BOLD);
      paragraph.Add("Prueba PDF");
      doc.Add(paragraph);
      paragraph.Clear();

Para agregar saltos de linea solo basta con agregar “\n” a nuestro documento
     doc.Add(new Paragraph("\n"));


Podemos agregar imágenes a nuestro documento con la siguiente instruccion
     iTextSharp.text.Image imgpfd = iTextSharp.text.Image.GetInstance(@"C:\images\imgprueba.jpg"); //Dirreccion a la imagen que se hace referencia
     imgpfd.SetAbsolutePosition(50, 50); //Posicion en el eje carteciano de X y Y
     imgpfd.ScaleAbsolute(200, 200);//Ancho y altura de la imagen
     doc.Add(imgpfd); // Agrega la imagen al documento



Una vez terminado de escribir nuestro documento procedemos a cerrar el documento con:
doc.Close();    
y con esto tendremos nuesotr documento en la ruta que definimos al principio     

Este es un pequeñop tip para poder abrir nuestro documento desde la pagina web donde nos dara la opcion de descargarlo

Response.Clear();
      Response.ClearContent();
      Response.ClearHeaders();
      Response.AddHeader("Content-Disposition", "attachment; filename=Nombrearchivo.pdf");
      Response.ContentType = "application/pdf";
      Response.TransmitFile(rut);
      Response.End();


Con esto terminamos este pequeño tutorial, la continuacion de este es como crear el reporte pero con una el uso de tablas, que a mi me a funcionado mejor que estar escribiendo el texto plano.

Cualquier duda o comentario estoy a sus ordenes.

Saludos cordiales!