none
Guardar archivo .PDF en MySQL RRS feed

  • Pregunta

  • Estimados

             Junto con saludarlos, vuelvo al forum para consultar algo especifico y aunque he revisado tutoriales aun no me queda muy claro y deseo pedir su ayuda. Mi problema es guardar un archivo .PDF en la base de datos en este caso en MySQL, para que se entienda mejor mi consulta lo explico, estoy desarrollando una aplicacion en Windows.Forms la cual por medio de un escaner digitaliza documentos y a veces son de multipaginas, en un principio se guardaria en una ruta especifica. Con el tiempo cambiaron los requerimientos y ahora se me solicito realizar guardar dicho documento en una base de datos MySQL, como presente al inicio revise un tutorial para guardar una imagen en la base de datos y luego pensar llevarla a guardar el .PDF a la base de datos. Al guardar la imagen en la base de datos en un campo longblob me sorprendi al no contener este el nombre adjunto al guardar el archivo... probe varias veces y siempre aparecia blob y al descargar el archivo de la base de datos este no tenia nombre ni formato especifico. Espero poder contar con su ayuda para este problema.

    Consulta sobre un DataGridView, como puedo cargar la informacion de documentos relacionados al usuario que ingreso por medio de un login en el evento Load del formulario.

    Lo otro que queria saber es poder contar con algun tutorial para realizar un Web Service ResT, en el que pueda ir avanzando y me permita realizar consultas a la base de datos desde ese punto o si se puede almacenar una base de datos. Pido ayuda para aprender sobre la materia ya que debo desarrollar un web service para realizar un ingreso de usuario, llenar un DataGridView e insertar el archivo .PDF en la base de datos.

    Lo siento por tantas consultas aunque mas me interesa lo primero, aunque no dejan de ser importante los demas consultas, dejare el codigo por el cual realizo la creacion del .PDF

    private void btnAcheter_Click(object sender, EventArgs e)
            {
                btnAcheter.Enabled = false;
    
                /// <summary>
                /// Modificacion en el proceso la conexion al dispositivo especifico y requerido p
                /// su digitalizacion 
                /// </summary>
    
                deviceManager.IsTwain2Compatible = true;
                // Abrir el administrador de dispositivos
                deviceManager.Open();
                // Obtencion del dispositivo especifico
                string deviceName = "KODAK Scanner: i2000";
                device = deviceManager.Devices.Find(deviceName);
                if (device == null)
                {
                    MessageBox.Show("El driver del dispositivo " + deviceName + " no esta instalado o fue desinstalado del sistema, favor realizar la instalacion de dicho driver para su funcionamiento", "Administrador de dispositivos");
                    btnAcheter.Enabled = true;
                }
                else
                {
                    // Dialogo de la seleccion del dispositivo a seleccionar
                    // deviceManager.ShowDefaultDeviceSelectionDialog();
                    // Obtiene la referencia del dispositivo seleccionado
                    // Deshabilitar 
                    device.ShowUI = false;
                    device.DisableAfterAcquire = true;
                    // abrir el dispositivo
                    device.Open();
                    // Establece losparametros para la adquisicion
                    
                    device.TransferMode = TransferMode.Memory;
                    device.PixelType = PixelType.Gray;
                    device.UnitOfMeasure = UnitOfMeasure.Inches;
                    device.Resolution = new Resolution(200.0f, 200.0f);
                    
                    //Parametros de Kodak Alaris
    
    
                    string nomEquipe = Environment.MachineName;
                    string dataJour = (DateTime.Today).ToString("yyyyMMdd");
                    string dataHeure = (DateTime.Now).ToString("HHmm");
                    string formatCode = "" + nomEquipe + "_" + dataJour + "_" + dataHeure + ".pdf";
                    //Modificar donde guardar el archivo del documento escaneado
                    string pdfFilename = Path.Combine(@"C:\KCPdocumentos\KCP", formatCode);
    
                    if (device.HasFeeder)
                    {
                        device.DocumentFeeder.Enabled = true;
                        // Adquisicion de las imagenes desde el alimentador de documentos
                        device.XferCount = -1;
                        // si permite escanear las imagenes en ambas caras
                        if (device.DocumentFeeder.DuplexMode != DuplexMode.None)
                        {
                            // habilitar paginas en modo duplex
                            device.DocumentFeeder.DuplexEnabled = true;
                            // si el alimentador detecta el papel
                            if (device.DocumentFeeder.PaperDetectable)
                            {
                                // Si el alimentador esta cargado
                                if (device.DocumentFeeder.Loaded)
                                    //adquiere imagenes de forma asincronica
                                    device.Acquire();
                            }
                            else
                                //adquiere imagenes de forma asincronica
                                device.Acquire();
                        }
                    }
    
                    // adquerir imagenes desde el dispositivo
                    AcquireModalState acquireModalState = AcquireModalState.None;
                    AcquiredImage acquiredImage;
    
                    do
                    {
                        acquireModalState = device.AcquireModal();
                        switch (acquireModalState)
                        {
                            case AcquireModalState.ImageAcquired:
                                // obtener una referencia de la imagen adquirida por el dispositivo
                                acquiredImage = device.AcquiredImage;
                                // detectar bordes
                                ProcessAcquiredImage(acquiredImage);
                                // agregar una imagen que no sea blanca al multipagina TIFF
                                // (0.01f) = 1%
                                if (!acquiredImage.IsBlank(0.03f))
                                    acquiredImage.Save(tiffFilename);
                                // Disponer de la imagen adquirida
                                acquiredImage.Dispose();
                                break;
                        }
                    }
                    while (acquireModalState != AcquireModalState.None);
    
                    // cerrar el dispositivo
                    device.Close();
    
                    // cerrar el administrador de dispositivos
                    deviceManager.Close();
    
                    // Desbloquear botones hasta terminar su funcion
                    btnAccueil.Enabled = true;
                }
            }

    Atte. Nicolás Villablanca

    • Cambiado Joyce_AC viernes, 26 de mayo de 2017 15:18
    viernes, 26 de mayo de 2017 15:00

Respuestas

  • Saludos,

    La verdad no es una buena practica guardar archivos directo en la base de datos, lo que se hace con los PDF es guargar un binario y luego hacer referencia por medio de ese key los PDF se alojan en carpetas físicas y desde la base de le indica el path, revisa este ejemplo :

    PDF


    Si mi respuesta te ha ayudado a resolver tus problemas, Selecciona "Proponer como respuesta"

    Blog
    J.Joaquin

    viernes, 26 de mayo de 2017 15:10

Todas las respuestas

  • Saludos,

    La verdad no es una buena practica guardar archivos directo en la base de datos, lo que se hace con los PDF es guargar un binario y luego hacer referencia por medio de ese key los PDF se alojan en carpetas físicas y desde la base de le indica el path, revisa este ejemplo :

    PDF


    Si mi respuesta te ha ayudado a resolver tus problemas, Selecciona "Proponer como respuesta"

    Blog
    J.Joaquin

    viernes, 26 de mayo de 2017 15:10
  • Buenas Joaquin

            Comprendo que no es una buena practica guardar los archivos o imagenes en una base de datos y se guarda la ruta de donde se almaceno el archivo, aunque en este caso la base de datos es externa y desean guardar dicho archivo que se digitalizo desde un escaner a la bse de datos

    viernes, 26 de mayo de 2017 15:29