none
Como ler ou ver PDF SQL

    Question

  • Utilizo este método, para passar arquivos PDF, numa textbox e depois gravar no sql. Se eu quiser visualizar esses ficheiros como é que faço para os poder visualizar?
    Já tentei uma PictureBox e não consegui. Obrigado.

     public void OpenPDF()
            {
                OpenFileDialog dlg = new OpenFileDialog();
    
                dlg.Title = "Abrir PDF";
                dlg.Filter = "PDF(*.pdf)|*.pdf";
    
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
    
                        Form1.DocumentoPDF.Text = dlg.FileName;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Não foi possível carregar o PDF" + ex.Message);
                    }
                }
            }

    Thursday, April 11, 2013 1:20 PM

Answers

All replies

  • Olá,

    você pode utilizar a chamada 

    System.Diagnostics.Process.Start(dlg.FileName);

    Thursday, April 11, 2013 2:28 PM
  • uma outra maneira é utilizando o PDFSharp, você terá que referenciar em seu projeto. 

    abaixo estou deixando o link para download.

    http://pdfsharp.codeplex.com/

     
    • Marked as answer by NunoFalé Thursday, April 11, 2013 4:10 PM
    Thursday, April 11, 2013 2:39 PM
  • uma outra maneira é utilizando o PDFSharp, você terá que referenciar em seu projeto. 

    abaixo estou deixando o link para download.

    http://pdfsharp.codeplex.com/

     
    E agora como é que vou gravar esse campo no sql? E depois de estar gravado no sql..como é que vou visualiza-lo?
    Friday, April 12, 2013 8:40 AM
  • você tem duas opções. 

    1º) fazer uma cópia do arquivo na pasta do sistema que os usuário tem acesso e no SQL somente indicar o caminho onde ele estará guardado. 

    2º) guardar o arquivo dentro do SQL em formato binário. 

    eu sinceramente prefiro a segundo opção, veja como fazer:

     openFileDialog1.Title = "PDF";
                openFileDialog1.Filter = "PDF(*.pdf)|*.pdf";
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
    
                    string nome = openFileDialog1.FileName;
                    FileStream stream = File.OpenRead(nome);
                    FileInfo f = new FileInfo(nome);
                    nome = f.Name;
                    byte[] valor = new byte[stream.Length];
                    gravarArquivo(nome, valor);
                    
                }


    cima o sistema converte o arquivo que você selecionou em Byte[] e chama o método gravarArquivo, passando o nome e o valor. 

    veja como gravar no banco de dados:

     void gravarArquivo( string nome, byte [] valor)
            {
                
                SqlConnection cnnBase = new SqlConnection("Server=(local);Data Source=(local);Initial Catalog=testes;User ID=UsrDesenvolvimetno;Password=12345;");
                const string SQL = @"INSERT arquivo 
    select newid(), @nome, @arquivo";
                SqlCommand cmd = new SqlCommand(SQL, cnnBase);
    
                try
                {
                    
                    cmd.Parameters.Add("@nome",SqlDbType.VarChar).Value= nome;
                    cmd.Parameters.Add("@arquivo", SqlDbType.Image).Value = valor;
    
                    cnnBase.Open();
                    cmd.ExecuteNonQuery();
                    cnnBase.Close();
    
                }
                catch (Exception e)
                {
    
                }
                finally
                {
                    cmd.Dispose();
                    cnnBase.Close();
                }
    
            }

    no meu caso eu criei uma tabela chamada arquivo, com 3 colunas:

    IdArquivo - Uniqueidentifier

    Nome - Varchar(255)

    arquivo - Image


    Friday, April 12, 2013 11:42 AM
  • você tem duas opções. 

    1º) fazer uma cópia do arquivo na pasta do sistema que os usuário tem acesso e no SQL somente indicar o caminho onde ele estará guardado. 

    2º) guardar o arquivo dentro do SQL em formato binário. 

    eu sinceramente prefiro a segundo opção, veja como fazer:

     openFileDialog1.Title = "PDF";
                openFileDialog1.Filter = "PDF(*.pdf)|*.pdf";
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
    
                    string nome = openFileDialog1.FileName;
                    FileStream stream = File.OpenRead(nome);
                    FileInfo f = new FileInfo(nome);
                    nome = f.Name;
                    byte[] valor = new byte[stream.Length];
                    gravarArquivo(nome, valor);
                    
                }


    cima o sistema converte o arquivo que você selecionou em Byte[] e chama o método gravarArquivo, passando o nome e o valor. 

    veja como gravar no banco de dados:

     void gravarArquivo( string nome, byte [] valor)
            {
                
                SqlConnection cnnBase = new SqlConnection("Server=(local);Data Source=(local);Initial Catalog=testes;User ID=UsrDesenvolvimetno;Password=12345;");
                const string SQL = @"INSERT arquivo 
    select newid(), @nome, @arquivo";
                SqlCommand cmd = new SqlCommand(SQL, cnnBase);
    
                try
                {
                    
                    cmd.Parameters.Add("@nome",SqlDbType.VarChar).Value= nome;
                    cmd.Parameters.Add("@arquivo", SqlDbType.Image).Value = valor;
    
                    cnnBase.Open();
                    cmd.ExecuteNonQuery();
                    cnnBase.Close();
    
                }
                catch (Exception e)
                {
    
                }
                finally
                {
                    cmd.Dispose();
                    cnnBase.Close();
                }
    
            }

    no meu caso eu criei uma tabela chamada arquivo, com 3 colunas:

    IdArquivo - Uniqueidentifier

    Nome - Varchar(255)

    arquivo - Image


    Ok. Assim grava como imagem..e agora como é que vou extrai-la do SQL para por exemplo um axAcroPDF? 
    Friday, April 12, 2013 4:15 PM