Sv Community El Salvador

Soporte y Tecnología => Programación => .NET => Mensaje iniciado por: kernel en agosto 16, 2012, 03:26:35 pm

Título: ayuda como leer PDF almacenado en sql
Publicado por: kernel en agosto 16, 2012, 03:26:35 pm
Hola señores como  estan espero que bien  :thumbsup:

necesito ayuda para leer un documento pdf almacenado en la base de datos
no se como lo puedo hacer .
ya guardo el archivo en la base de datos pero no se de que manera puedo llamar el archivo que esta en la base de datos y mostralo en el objeto COM
axAcrobatPDF.loadfile(pdf)
proyecto c#
de de ya muchas gracias :sur:
Título: Re: ayuda como leer PDF almacenado en sql
Publicado por: Darkness en agosto 16, 2012, 04:43:19 pm
Metiste el pdf en binario, ahora sacalo de la bd y converti el binario a pdf lo guardas como temporal y lo ejecutas con tu lector de pdf


Enviado desde mi GT-I5700 usando Tapatalk
Título: Re:ayuda como leer PDF almacenado en sql
Publicado por: Non Servium en agosto 17, 2012, 08:39:46 am
Te recomiendo mil veces mejor no saturar el gestor de base de datos.

En su defecto podrías usar reportes (Crystal Reports o Analysis Services)
Si los reportes no son estandar, podrías guardar los archivos pdf en una carpeta compartida para luego bajarlo (si es Web) por cualquier usuario que haga la consulta a una tabla donde esté vinculada la URL del reporte (O la ruta física compartida) en lugar de extraer un Byte array
Título: Re:ayuda como leer PDF almacenado en sql
Publicado por: kernel en agosto 17, 2012, 10:03:36 am
Te recomiendo mil veces mejor no saturar el gestor de base de datos.

En su defecto podrías usar reportes (Crystal Reports o Analysis Services)
Si los reportes no son estandar, podrías guardar los archivos pdf en una carpeta compartida para luego bajarlo (si es Web) por cualquier usuario que haga la consulta a una tabla donde esté vinculada la URL del reporte (O la ruta física compartida) en lugar de extraer un Byte array

Lo que sucede es que asi de esa manera me pidieron la aplicacion los documentos pdf ya estan almacenados en una db
Título: Re:ayuda como leer PDF almacenado en sql
Publicado por: tekun en agosto 17, 2012, 10:39:29 am
? como, que no tenes adobe reader?... hay varios lectores de pdf

como insertar el archivo pdf? ocupas blob o bytea en la tabla? yo para guardar xlsx, pdf, hasta exe y dll; ocupo bytea. luego de la misma forma en como meto el archivo lo saco y un par de streams reader de vb.Net puedo crear el mismo archivo y voila...

no entiendo realmente el problema... que RDBMS utilizas? "almacenado en sql" realmente me confunde un "pelin".... como lo guardas?
Título: Re:ayuda como leer PDF almacenado en sql
Publicado por: kernel en agosto 17, 2012, 01:55:41 pm
ok ya logre sacar el archivo pero ahora no se que tengo mal xq el  archivo me lo crea dañado no lo puedo abrir.
este es el codigo:

Código: [Seleccionar]
ConexionDB StrConexionServer = new ConexionDB();
        String strCnnString = StrConexionServer.CadenaConexion();
        SqlConnection con = new SqlConnection(strCnnString);
        string lsQuery = "Select pdf From tabla Where id=1";
                SqlCommand loComando = new SqlCommand(lsQuery,con);
                con.Open();
                SqlDataReader  drDocumentos = loComando.ExecuteReader(CommandBehavior.SingleRow);
                   if( drDocumentos.Read() ){
                      aBytDocumento = ((byte[])drDocumentos[0]);
                   }
               
           
            oFileStream = new FileStream(@"C:\windows\temp\documento.pdf" , FileMode.CreateNew, FileAccess.Write);
            oFileStream.Write(aBytDocumento, 0, aBytDocumento.Length);
            oFileStream.Close();

       
              pdf1.LoadFile(@"C:\windows\temp\documento.pdf");
        }catch(Exception Exp){
            MessageBox.Show(Exp.Message, "xxx", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
Título: Re:ayuda como leer PDF almacenado en sql
Publicado por: tekun en agosto 17, 2012, 02:32:31 pm
no sabria decirte que esta malo, porque no se mucho de streams, pero te dejo el codigo que utilizo, con postgres y vb.Net


                    command = New NpgsqlCommand("select campo_bytea_archivo_pdf from tablita", conexion_base_datos)
                    Dim result As Byte() = command.ExecuteScalar()

                        fs = New IO.FileStream("c:\archivo.pdf", FileMode.Create, FileAccess.Write)


                    Dim bw As New BinaryWriter(New BufferedStream(fs))
                    bw.Write(result)
                    bw.Flush()
                    bw.Close()

Título: Re:ayuda como leer PDF almacenado en sql
Publicado por: kernel en agosto 17, 2012, 04:41:03 pm
no sabria decirte que esta malo, porque no se mucho de streams, pero te dejo el codigo que utilizo, con postgres y vb.Net


                    command = New NpgsqlCommand("select campo_bytea_archivo_pdf from tablita", conexion_base_datos)
                    Dim result As Byte() = command.ExecuteScalar()

                        fs = New IO.FileStream("c:\archivo.pdf", FileMode.Create, FileAccess.Write)


                    Dim bw As New BinaryWriter(New BufferedStream(fs))
                    bw.Write(result)
                    bw.Flush()
                    bw.Close()

lo hise de esa forma pero sucede que a la hora de abrirlo siempre me dice que el archivo esta dañado
Título: Re:ayuda como leer PDF almacenado en sql
Publicado por: tekun en agosto 17, 2012, 05:09:16 pm
en mi forma, el campo "campo_bytea_archivo_pdf" es de tipo BYTEA, en tu caso el campo donde guardar el archivo que tipo es?

como insertas el documento?
Título: Re:ayuda como leer PDF almacenado en sql
Publicado por: kernel en agosto 20, 2012, 07:20:00 am
en mi forma, el campo "campo_bytea_archivo_pdf" es de tipo BYTEA, en tu caso el campo donde guardar el archivo que tipo es?

como insertas el documento?
en mi caso el campo es binary
Título: Re:ayuda como leer PDF almacenado en sql
Publicado por: kernel en agosto 20, 2012, 08:50:46 am
en mi forma, el campo "campo_bytea_archivo_pdf" es de tipo BYTEA, en tu caso el campo donde guardar el archivo que tipo es?

como insertas el documento?
ya logre descargar el documento lo que me hacia generar el error del archivo era el tipo de datos en la tabla (binary) lo cambie a varbinary(max) ohyea: :thumbsup: :yahoo:
Título: Re:ayuda como leer PDF almacenado en sql
Publicado por: Juancho en agosto 23, 2012, 07:59:53 am
Solo como consejo, al menos en el caso de SQL Server (porque noc que RDBMS estas usando)  tiene un tipo de datos llamado FILESTREAM. Este te permite almacenar los archivos como documentos, imagenes etc dentro del sistema de archivos d windows, pero SQL Server se encarga de adminsitrar el acceso y que puedas accederlo a traves de SQL.

Te digo esto xq si vas a tener un monton de registros con su PDF estas practicamente matando el Performance de la base. Por ello SQL Server introdujo esa caracteristica en 2008.

En todo caso, aun si no utilizaras el tipo de datos FILESTREAM, y quieres continuar con VARBINARY(MAX), te recomiendo que lo dividas en 2 tablas.. En una tablas vas a tener todos los campos y haces una relacion de 1:1 con la segunda tabla para guardar el archivo PDF en esa tabla. Esto es por PERFORMANCE de tu BD y la paginacion por parte de SQL Server.

Si no utilizas SQL Server, olvida todo lo q dije...!  :thumbsup: