Autor Tema: ayuda como leer PDF almacenado en sql  (Leído 16066 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kernel

  • Trade Count: (0)
  • MiembrosReales
  • *
  • Thank You
  • -Given: 3
  • -Receive: 1
  • Mensajes: 45
    • kerneltecnico
ayuda como leer PDF almacenado en sql
« : 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:
« Última Modificación: agosto 16, 2012, 03:36:17 pm por kernel »
el peor de los hombres es todo aquel que teniendo la vista no pueda ver...

Desconectado Darkness

  • Trade Count: (3)
  • The Communiter-
  • *
  • Thank You
  • -Given: 65
  • -Receive: 20
  • Mensajes: 2142
  • The Darkness
    • Diseño y Programaciòn Web Profesional
Re: ayuda como leer PDF almacenado en sql
« Respuesta #1 : 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
La Muerte Simplemente es el Despertar de Un Sueño Lleno de Falsedades e hipocrecias.
"Larga Vida Al Heavy Metal"

Iron Maiden Discografia DD

Desconectado Non Servium

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 6
  • -Receive: 39
  • Mensajes: 426
  • Ilix Punx :)
Re:ayuda como leer PDF almacenado en sql
« Respuesta #2 : 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
♫ Condenados a perder la libertad! Por no acatar las leyes que les asignaron. ♪ ♫
Decididos, decididos a emprender! Un camino largo y duro por no ser esclavos ♫


Watch

Desconectado kernel

  • Trade Count: (0)
  • MiembrosReales
  • *
  • Thank You
  • -Given: 3
  • -Receive: 1
  • Mensajes: 45
    • kerneltecnico
Re:ayuda como leer PDF almacenado en sql
« Respuesta #3 : 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
el peor de los hombres es todo aquel que teniendo la vista no pueda ver...

Desconectado tekun

  • -^- Elite Silver -^-
  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 53
  • -Receive: 101
  • Mensajes: 3219
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:ayuda como leer PDF almacenado en sql
« Respuesta #4 : 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?
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado kernel

  • Trade Count: (0)
  • MiembrosReales
  • *
  • Thank You
  • -Given: 3
  • -Receive: 1
  • Mensajes: 45
    • kerneltecnico
Re:ayuda como leer PDF almacenado en sql
« Respuesta #5 : 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);
        }
el peor de los hombres es todo aquel que teniendo la vista no pueda ver...

Desconectado ~

  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 0
  • -Receive: 156
  • Mensajes: 1408
    • Ciencia de Computación, OSes y Herramientas
Re:ayuda como leer PDF almacenado en sql
« Respuesta #6 : agosto 17, 2012, 02:09:38 pm »
¿Por qué no subir un PDF de muestra aquí? Subir el PDF que ha pasado por la base de datos y el PDF original, para tratar de buscar diferencias y tener una idea más precisa de qué es el problema.
Mi sitio web:
---- IP para archivo hosts (todos mis subdominios):
190.150.9.244 archefire.org

Desconectado tekun

  • -^- Elite Silver -^-
  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 53
  • -Receive: 101
  • Mensajes: 3219
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:ayuda como leer PDF almacenado en sql
« Respuesta #7 : 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()

lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado kernel

  • Trade Count: (0)
  • MiembrosReales
  • *
  • Thank You
  • -Given: 3
  • -Receive: 1
  • Mensajes: 45
    • kerneltecnico
Re:ayuda como leer PDF almacenado en sql
« Respuesta #8 : 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
el peor de los hombres es todo aquel que teniendo la vista no pueda ver...

Desconectado tekun

  • -^- Elite Silver -^-
  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 53
  • -Receive: 101
  • Mensajes: 3219
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:ayuda como leer PDF almacenado en sql
« Respuesta #9 : 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?
Follow members gave a thank to your post:
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado kernel

  • Trade Count: (0)
  • MiembrosReales
  • *
  • Thank You
  • -Given: 3
  • -Receive: 1
  • Mensajes: 45
    • kerneltecnico
Re:ayuda como leer PDF almacenado en sql
« Respuesta #10 : 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
el peor de los hombres es todo aquel que teniendo la vista no pueda ver...

Desconectado kernel

  • Trade Count: (0)
  • MiembrosReales
  • *
  • Thank You
  • -Given: 3
  • -Receive: 1
  • Mensajes: 45
    • kerneltecnico
Re:ayuda como leer PDF almacenado en sql
« Respuesta #11 : 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:
el peor de los hombres es todo aquel que teniendo la vista no pueda ver...

Desconectado Juancho

  • Trade Count: (2)
  • The Communiter-
  • *
  • Thank You
  • -Given: 12
  • -Receive: 16
  • Mensajes: 1311
Re:ayuda como leer PDF almacenado en sql
« Respuesta #12 : 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:
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>