none
PDF RRS feed

  • Pergunta

  • Gostaria de uma ajuda na linha abaixo que esta dando erro

    using (FileStream stream = new FileStream(FileName, FileMode.Create))

    Esse é o codigo inteiro

     Form4 FRM = new Form4();
                FRM.ShowDialog();
                string valor = FRM.CapturarValorTextBox();
    
                PdfPTable pdfTable = new PdfPTable(dataGridView1.DisplayedColumnCount(true));
                pdfTable.DefaultCell.Padding = 2;
                pdfTable.WidthPercentage = 100;
                pdfTable.HorizontalAlignment = Element.ALIGN_LEFT;
                pdfTable.DefaultCell.BorderWidth = 1;
    
    
                foreach (DataGridViewColumn column in dataGridView1.Columns)
                {
                    if (column.Visible)
                    {
                        PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText));
                        cell.BackgroundColor = new iTextSharp.text.Color(240, 240, 240);
                        pdfTable.AddCell(cell);
                    }
                }
    
    
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    foreach (DataGridViewCell cell in row.Cells)
                    {
                        if (cell.Visible)
                        {
                            if (cell.Value != null)
                            {
                                if (cell.Value is DateTime)
                                {
                                    DateTime data;
                                    DateTime.TryParse(Convert.ToString(cell.Value), out data);
    
                                    pdfTable.AddCell(data.ToShortDateString());
                                }
                                else
                                {
                                    pdfTable.AddCell(cell.Value.ToString());
                                }
                            }
                        }
                    }
                }
    
    
                string folderPath = @"C:\Programa\Pauta Auditoria\PDF\";
                if (!Directory.Exists(folderPath))
                {
                    Directory.CreateDirectory(folderPath);
                }
    
                string FileName = folderPath + DateTime.Now.ToString(valor) + ".pdf";
    
                using (FileStream stream = new FileStream(FileName, FileMode.Create))
    
                {
                    Document pdfDoc = new Document(PageSize.A4, 14f, 14f, 80f, 30f);
                    PdfWriter.GetInstance(pdfDoc, stream);
                    pdfDoc.Open();
                    var imagemdotopo = iTextSharp.text.Image.GetInstance(@"C:\Programa\Pauta Auditoria\01.png");
                    imagemdotopo.SetAbsolutePosition(195, 770);
                    pdfDoc.Add(imagemdotopo);
                    pdfDoc.Add(pdfTable);
                    pdfDoc.Close();
                    stream.Close();
                }
            }

    Porque do erro?

    domingo, 6 de novembro de 2016 22:50

Respostas

  • ok.. faça o seguinte um teste, altere seu codigo deste jeito:


    FRM.ShowDialog();
    string valor = FRM.CapturarValorTextBox();
    MessageBox.Show("Valor : "+ valor);
    

    e verifique o conteuto de valor... 

    string FileName = folderPath + valor + ".pdf";

    por exemplo, se valor contiver testeNovembro2016 o resultado deveria ser

    C:\Programa\Pauta Auditoria\PDF\testeNovembro2016.PDF

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta SouthNew segunda-feira, 7 de novembro de 2016 18:21
    segunda-feira, 7 de novembro de 2016 18:10
    Moderador

Todas as Respostas

  • Ola, qual a mensagem de erro?

    Rodrigo Reis Ferreira
    Microsoft Certified

    segunda-feira, 7 de novembro de 2016 12:11
  • Eu descobrir que o erro esta na linha de cima

    string FileName = folderPath + DateTime.Now.ToString(valor) + ".pdf";
    
    pois eu usava o horário atual para nomear e agora eu pego o nome digitado em outra form, como pode ver no topo do codigo, Mas ainda não descobrir como deixar o nome do pdf com a informação digitada pelo usuario.
    segunda-feira, 7 de novembro de 2016 12:30
  • A variavel "valor" nao é um parametro válido para o metodo ToString. Sinceramente eu nao entendi o que vc esta tentando fazer ali.

    Sugiro usar assim:

    string FileName = folderPath + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";

    Con isso voce gera uma string valida.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    segunda-feira, 7 de novembro de 2016 14:42
    Moderador
  • mas eu quero alterar justamente de data para a variável valor. Como ficaria?
    segunda-feira, 7 de novembro de 2016 15:21
  • "valor" é uma data?

    Neste caso ficaria assim:

    string FileName = folderPath + valor + ".pdf";

    Como valor já é uma string, voce nao precisa converter.

    Qual é o nome que voce espera obter no fim? Pderia dar um exemplo?

    É algo do tipo: c:\temp\20161107103012.pdf ?

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    segunda-feira, 7 de novembro de 2016 15:23
    Moderador
  • Tentei dessa forma

    string FileName = folderPath + valor + ".pdf";

    Mas o retorno é um pdf criado sem nome. Goataria que o pdf criado tivesse o nome que foi digitado na textbox da form 4.

    segunda-feira, 7 de novembro de 2016 16:15
  • Mesmo passando o FileName na "mão" ele grava sem nome? O que existe na variável FileName após a execução da linha acima?

    Rodrigo Reis Ferreira
    Microsoft Certified

    segunda-feira, 7 de novembro de 2016 16:32
  • Esta tudo como na mensagem inicial que mandei com o código. So mudei a linha informada para:

    string FileName = folderPath + valor + ".pdf";
    e esta saindo sem nome o pdf 

    segunda-feira, 7 de novembro de 2016 16:45
  • E voce verificou se o valor contem alguma informaçao?

    Creio que o problema esteja no retorno

      string valor = FRM.CapturarValorTextBox();

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    segunda-feira, 7 de novembro de 2016 16:57
    Moderador
  • Tem sim, eu clico em um butão onde abre a form4 com a textbox e digito o nome que quero dar ao pdf.

    Form4:

     public string CapturarValorTextBox()
            {
                return CaminhoPDF.Text;
            }

    segunda-feira, 7 de novembro de 2016 17:01
  • ok.. faça o seguinte um teste, altere seu codigo deste jeito:


    FRM.ShowDialog();
    string valor = FRM.CapturarValorTextBox();
    MessageBox.Show("Valor : "+ valor);
    

    e verifique o conteuto de valor... 

    string FileName = folderPath + valor + ".pdf";

    por exemplo, se valor contiver testeNovembro2016 o resultado deveria ser

    C:\Programa\Pauta Auditoria\PDF\testeNovembro2016.PDF

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta SouthNew segunda-feira, 7 de novembro de 2016 18:21
    segunda-feira, 7 de novembro de 2016 18:10
    Moderador