ASP.NET - Problemas de tabulacion de datos con ItextSharp

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 3 puestos en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Problemas de tabulacion de datos con ItextSharp

Publicado por ezequiel (2 intervenciones) el 18/09/2018 15:22:28
Buen día, mi problema es el siguiente. Cuando exporto datos de un gridview en una parte del pdf me aparecen mal tabulados los datos de una lista de valores, como pueden ver en la siguiente imagen


imagena

Yo necesito que en el pdf se vea de la siguiente manera:

imagenb

Cuando entro al gestor de base de datos y exporto la consulta de base de datos a txt, el txt me aparece bien formateado. Ademas en el sistema anterior que hizo la empresa a la cual trabajo, lo exporta correctamente tabulado como en la 2º imagen.


Aclaracion importante: Toda la informacion del pdf se encuentra contenida en un solo campo de una tabla de la base de datos donde simplemente hago la consulta sql y ya me trae todo armado.

Les paso mi codigo a ver si me pueden dar una mano, quizas me esté faltando algo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public void SetPdf()
        {
 
            PdfPTable PdfTable = new PdfPTable(GridView2.HeaderRow.Cells.Count);
            //BaseFont bfTimes = BaseFont.CreateFont("c:/windows/fonts/arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
            //iTextSharp.text.Font _standardFont = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 8, iTextSharp.text.Font.NORMAL, BaseColor.BLACK);
 
            BaseFont bfTimes = BaseFont.CreateFont("c:/windows/fonts/arial.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            Font fuente = new Font(bfTimes, 7);
 
 
 
            foreach (GridViewRow gridViewRow in GridView2.Rows)
            {
                foreach (TableCell tableCell in gridViewRow.Cells)
                {
                    String texto = HttpUtility.HtmlDecode(tableCell.Text);
                    Phrase p = new Phrase(texto, fuente);
                    p.Add(new VerticalPositionMark());
                    PdfPCell pdfCell = new PdfPCell(p);
 
                    pdfCell.BorderWidthBottom = 0f;
                    pdfCell.BorderWidthLeft = 0f;
                    pdfCell.BorderWidthTop = 0f;
                    pdfCell.BorderWidthRight = 0f;
 
                    PdfTable.AddCell(pdfCell);
                }
            }
 
 
 
            Session["pdf"] = PdfTable;
        }

Codigo para mostrar el archivo pdf en la pagina web
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public partial class VisorPdf : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
 
            PdfPTable pdf = (PdfPTable)Session["pdf"];
 
            String archivo = Request.QueryString["filename"];
 
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", string.Format("inline;filename=" + archivo));
            Document pdfDocument = new Document(PageSize.LETTER);
            PdfWriter.GetInstance(pdfDocument, Response.OutputStream);
 
            pdfDocument.Open();
            pdfDocument.Add(pdf);
            pdfDocument.Close();
 
            Response.End();
 
        }
    }

Desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Damian
Val: 7
Ha aumentado su posición en 2 puestos en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Problemas de tabulacion de datos con ItextSharp

Publicado por Damian (4 intervenciones) el 03/10/2018 07:03:18
debe ser el tipo de letra, cada tipo de letra tiene un ancho diferente en sus letras, debe haber algún tipo de letra donde el ancho de todas sus letras sea el mismo, espero haberme explicado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas de tabulacion de datos con ItextSharp

Publicado por Ezequiel (8 intervenciones) el 06/10/2018 16:44:23
Ah vos decís que si elijo el tipo de letra correcto podría tabular bien como en un archivo txt osea como la última imageb? Capaz que la base de datos maneja un tipo de texto diferente y por eso no respeta las tabulaciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 156
Oro
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Problemas de tabulacion de datos con ItextSharp

Publicado por Wilfredo Patricio Castillo (62 intervenciones) el 09/10/2018 00:51:41
Tu problema está en que pretendes alinear todo el contenido. iTextSharp, trabaja basado en tablas y por lo tanto se compone de filas y columnas.

Entonces si quieres obtener un resultado decente, debes separar la data por ejemplo Descripción y Valores o Importe.

Entonces la descripción deberá ir en una columna y los importes en otra columna, con lo cual puedes alinear la información, darle formato, colores, bordes, fondo, todo eso y te quedará espectacular.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 93
Plata
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Problemas de tabulacion de datos con ItextSharp

Publicado por Cesar (32 intervenciones) el 09/10/2018 01:42:31
Hola.

Como te dijeron. Es el tipo de letra. Tu reporte se esta enviando como texto de ancho fijo.

Escoge cualquier tipo de letra de ancho fijo.

Del reporte de ejemplo que das, el tipo de letra parece ser Courier New.

Prueba con Courier New de tamaño 10.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha disminuido su posición en 3 puestos en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Problemas de tabulacion de datos con ItextSharp

Publicado por ezequiel (2 intervenciones) el 12/10/2018 16:07:15
Buenos días, aca estoy de vuelta y segui el consejo de poner la misma fuente que la pagina donde el reporte se ve bien, puse Courier 7 y la tabulacion se ve igual que como esta en el sistema viejo de la empresa. En el caso de la imagen, la parte de arriba es el pdf que genere yo, y la parte de abajo es el pdf de la pagina ya realizada anteriormente; pero ahora tengo otro problema que es una pavada pero no lo puedo arreglar.

imagenAmandar

El problema que tengo ahora que como veran en la imagen, no puedo dejar los margenes en 0 o que se ajusten a la hoja como si sucede en la parte de abajo. Me fije que para eso había que poner por ej:
1
Document pdfDocument = new Document(PageSize.A4, 0f, 0f, 0f, 0f);
Pero no anda.

Probe tambien con
1
2
3
4
5
6
7
pdfDocument.Open();
            pdfDocument.SetMargins(10f, 0f, 0f, 0f);
            pdfDocument.NewPage();
            pdfDocument.Add(PdfTable);
 
 
            pdfDocument.Close();
pero tampoco...

Me estará faltando algo mas en el codigo para que me quite los márgenes? Muchisimas gracias desde ya por su ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas de tabulacion de datos con ItextSharp

Publicado por Ezequiel (8 intervenciones) el 12/10/2018 16:56:14
Ahi pude solucionar lo de los margenes. Había que colocar PdfTable.WidthPercentage = 100;

Con respecto a lo de Wilfredo, anteriormente habia hecho algo asi de alinear manualmente las columnas; nomas que era trabajo por como trae el contenido la base de datos y tener que ir haciendo filtros de texto para ver que contenido tabular y cual dejarlo pasar, terminaba creando como varias tablas. Igual es una muy buena opcion por si me piden algo mas perfecto. Con esto de las fuentes me ahorro trabajo.

Muchas gracias a todos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar