iTextSharp ejemplos

July 26, 2017 | Author: Carlos Figueroa | Category: Table (Database), Portable Document Format, Computer Data, Software, Computing
Share Embed Donate


Short Description

Download iTextSharp ejemplos...

Description

iTextSharp - Introducción a las Tablas Tablas probablemente será uno de los elementos más utilizados en PDFs generados desde aplicaciones ASP.NET para proporcionar la estructura para documentos tales como pedidos y facturas. Este resumen no es un examen exhaustivo de las tablas, sino que proporciona una introducción al trabajo con ellos a través de iTextSharp, y se basa en los artículos anteriores de esta serie iTextSharp: Creación de archivos PDF en ASP.NET - Conceptos básicos del iTextSharp iTextSharp - Trabajar con fuentes iTextSharp - Adición de texto con fragmentos, frases y párrafos con listas iTextSharp iTextSharp - Enlaces y Marcadores Trabajar con tablas utilizando iTextSharp no es tan difícil, sobre todo porque muchos de los nombres de propiedad son tan similares o idénticos a sus contrapartes en CSS y HTML. Hay más de una clase en iTextSharp que se puede utilizar para crear tablas, así que para evitar dudas, voy a utilizar elPdfPTable clase, que está diseñado específicamente para su uso en documentos PDF. En su forma más simple, la mayoría aquí es cómo crear una tabla y agregarlo a un documento: PdfPTable table = new PdfPTable(3); PdfPCell cell = new PdfPCell(new Phrase("Header spanning 3 columns")); cell.Colspan = 3; cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right table.AddCell(cell); table.AddCell("Col 1 Row 1"); table.AddCell("Col 2 Row 1"); table.AddCell("Col 3 Row 1"); table.AddCell("Col 1 Row 2"); table.AddCell("Col 2 Row 2"); table.AddCell("Col 3 Row 2"); doc.Add(table);

El objeto PdfPTable se crea una instancia como una tabla de tres columnas - el 3 entero que se pasa al constructor. Las células se pueden agregar en un número de maneras. La primera celda se establece como un objeto PdfPCell, que puede tomar un objeto frase en uno de sus 7 constructores. El colspan se establece en 3, lo que significa que la célula se ocupan todo el ancho de la tabla, exactamente como en HTML. La posición horizontal del texto dentro de la celda se establece mediante uno de tres valores posibles. Todos los posibles valores se muestran como un comentario. Después de eso, dos filas de celdas se añaden utilizando el AddCell () y la tabla está finalmente comprometidos con el documento abierto actualmente.

El esfuerzo siguiente, se consulta una base de datos y presenta los datos resultantes en una tabla. También muestra algunas otras opciones que pueden ser utilizados para el peinado y la presentación de la tabla: PdfPTable table = new PdfPTable(2); //actual width of table in points table.TotalWidth = 216f; //fix the absolute width of the table table.LockedWidth = true; //relative col widths in proportions - 1/3 and 2/3 float[] widths = new float[] { 1f, 2f }; table.SetWidths(widths); table.HorizontalAlignment = 0; //leave a gap before and after the table table.SpacingBefore = 20f; table.SpacingAfter = 30f; PdfPCell cell = new PdfPCell(new Phrase("Products")); cell.Colspan = 2; cell.Border = 0; cell.HorizontalAlignment = 1; table.AddCell(cell); string connect = "Server=.\\SQLEXPRESS;Database=Northwind;Trusted_Connection=True;"; using (SqlConnection conn = new SqlConnection(connect)) { string query = "SELECT ProductID, ProductName FROM Products"; SqlCommand cmd = new SqlCommand(query, conn); try { conn.Open(); using (SqlDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { table.AddCell(rdr[0].ToString()); table.AddCell(rdr[1].ToString()); } } } catch(Exception ex) { Response.Write(ex.Message); } doc.Add(table); }

La tabla se empezó a desarrollar usando creado con 2 columnas. Entonces, el ancho de la tabla se define en puntos, y se fija. La anchura de las columnas se configuran a sí mismos relativamente a un tercio y dos tercios de la anchura total de la tabla. Para configurar un quinto y quintos 4, pasaría a 1f y 4f respectivamente. Puede slo establecer los anchos absolutos al pasar de valores que conjuntamente suponen el ancho de la tabla, por ejemplo: float[] widths = new float[] { 100f, 116f };

Una brecha se crea antes y después de la tabla asignando a la SpacingBefore y SpacingAfter propiedades. Esto es útil si tiene más de una tabla como continuación de otros, como el comportamiento por defecto es fijar las tablas subsiguientes a la anterior, como en MS Word, donde un toque rápido de la tecla Enter tiene el efecto mismo espacio. El borde se retira de la primera célula, que es tratado como una cabecera estableciendo la colspan a ser igual al número de columnas de la tabla, y el texto en la celda es alineada en el centro, utilizando el mismo valor que el utilizado para la alineación de la tabla en el

documento. A continuación, la base de datos se consulta y los datos devueltos en un SqlDataReader. Como es leído, los datos se consigna a las células que se añaden a la tabla:

El siguiente fragmento ilustra algunas de las opciones de formato de celdas. Como se verá, los creadores de iTextSharp han seguido los nombres de las propiedades CSS tanto como sea posible para que pueda trabajar con la sintaxis de estilo tan fácil como sea posible (si usted sabe que su CSS, por supuesto ...) PdfPTable table = new PdfPTable(3); table.AddCell("Cell 1"); PdfPCell cell = new PdfPCell(new Phrase("Cell 2", new Font(Font.HELVETICA, 8f, Font.NORMAL, Color.YELLOW))); cell.BackgroundColor = new Color(0, 150, 0); cell.BorderColor = new Color(255,242,0); cell.Border = Rectangle.BOTTOM_BORDER | Rectangle.TOP_BORDER; cell.BorderWidthBottom = 3f; cell.BorderWidthTop = 3f; cell.PaddingBottom = 10f; cell.PaddingLeft = 20f; cell.PaddingTop = 4f; table.AddCell(cell); table.AddCell("Cell 3"); doc.Add(table);

Hemos visto en un número de ocasiones cómo una célula se puede estirar horizontalmente a través del uso de la propiedad colspan. Pero ¿qué pasa verticalmente? En HTML debe utilizar la propiedad rowspan, pero no existe un equivalente en iTextSharp. Así que la respuesta es tablas anidadas. El código siguiente crea una tabla de cuatro columnas, con la celda inferior derecha se extiende horizontalmente a través de tres columnas, y verticalmente en tres filas.Bueno, ese es el aspecto final, pero lo que en realidad sucede es que una sola columna, tres fila de la tabla se anida dentro de la celda inferior izquierda. La célula de la tabla que está anidado dentro de su acolchado ha eliminado de manera que la tabla ocupa todo el espacio disponible dentro de ella. PdfPTable table = new PdfPTable(4); table.TotalWidth = 400f; table.LockedWidth = true; PdfPCell header = new PdfPCell(new Phrase("Header")); header.Colspan = 4; table.AddCell(header); table.AddCell("Cell 1"); table.AddCell("Cell 2"); table.AddCell("Cell 3"); table.AddCell("Cell 4"); PdfPTable nested = new PdfPTable(1); nested.AddCell("Nested Row 1"); nested.AddCell("Nested Row 2"); nested.AddCell("Nested Row 3"); PdfPCell nesthousing = new PdfPCell(nested); nesthousing.Padding = 0f; table.AddCell(nesthousing); PdfPCell bottom = new PdfPCell(new Phrase("bottom")); bottom.Colspan = 3; table.AddCell(bottom); doc.Add(table);

Finalmente, en este aspecto en las mesas, vemos cómo el contenido de texto de un celular puede ser rotado (lo cual es bastante elegante). PdfPTable table = new PdfPTable(3); table.TotalWidth = 144f; table.LockedWidth = true; table.HorizontalAlignment = 0; PdfPCell left = new PdfPCell(new Paragraph("Rotated")); left.Rotation = 90; table.AddCell(left); PdfPCell middle = new PdfPCell(new Paragraph("Rotated")); middle.Rotation = -90; table.AddCell(middle); table.AddCell("Not Rotated"); doc.Add(table);

La propiedad de rotación debe ajustarse a múltiplos de 90, o se produce un error. La célula central está ajustado a -90, pero 270 habría tenido el mismo efecto. La dirección por defecto que el contenido se hace girar es en sentido antihorario. El resultado es el siguiente:

Hay un montón más para trabajar con tablas en iTextSharp, y voy a cubrir una funcionalidad adicional en futuros artículos. Mientras tanto, Intellisense o el Examinador de objetos en Visual Studio revela una gran cantidad de métodos y propiedades que vale la pena experimentar con ver a sus resultados.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF