none
Problemas com criação de PDF m c# form. RRS feed

  • Pergunta

  • Pessoal,

    Preciso de uma ajuda, estou utilizando uma rotina para criar PDF de um Datagrid, até esta gerando o PDF mas esta todo errado o conteúdo do arquivo...

    Alguém poderia me ajudar? ou se tiver o sodigo melhor ainda, preciso que o PDF saia com o logo no cabeçalho de todas as folhas.

    Segue meu código:

     public static void GerarDocumento(Document document, DataGridView dtGridconsulta)
            {
                PdfPTable datatable = new PdfPTable(dtGridconsulta.ColumnCount);

                datatable.DefaultCell.Padding = 3;
                float[] headerwidths = GetTamanhoColumnas(dtGridconsulta);
                datatable.SetWidths(headerwidths);
                datatable.WidthPercentage = 100;

                string appPath = Path.GetDirectoryName(Application.ExecutablePath);
                Image image = Image.GetInstance(appPath + "\\MRBR-LOGO2.jpg");
                image.SetAbsolutePosition(200, 200);
                datatable.DefaultCell.BorderWidth = 1;
                datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
                datatable.AddCell(image);

                datatable.DefaultCell.BorderWidth = 1;
                datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
                datatable.AddCell(" ");

                for (int i = 0; i < dtGridconsulta.ColumnCount; i++)
                {
                    datatable.AddCell(dtGridconsulta.Columns[i].HeaderText);
                }

                datatable.HeaderRows = 1;
                datatable.DefaultCell.BorderWidth = 1;

                for (int i = 0; i < dtGridconsulta.RowCount; i++)
                {
                    foreach (DataGridViewColumn col in dtGridconsulta.Columns)
                    {
                        if (col != null)
                        {
                            datatable.AddCell(col.HeaderText);
                        }
                    }

                    datatable.CompleteRow();
                }
                        PdfWriter.GetInstance(document, new FileStream("Pedido.pdf", FileMode.Create));

                        // abre o documento
                        document.Open();

                        // adiciona conteúdo
                        document.Add(datatable);

                        // fecha o documento
                        document.Close();

                        MessageBox.Show("Pedido criado com sucesso.");
            }

            public static float[] GetTamanhoColumnas(DataGridView dg)
            {
                float[] values = new float[dg.ColumnCount];

                for (int i = 0; i < dg.ColumnCount; i++)
                {
                    values[i] = (float)dg.Columns[i].Width;
                }

                return values;
            }

    Estou mandando anexo uma imagem do conteúdo do PDF.

    Desde já muito obrigado pela força.


    Luiz Carlos

    Veja que vem os campos da grid duplicados e não vem o conteúdo das células...
    • Editado LC-Locker quinta-feira, 5 de julho de 2012 14:20 imagem anexo
    quinta-feira, 5 de julho de 2012 13:55

Todas as Respostas