none
Mostrar un documento PDF o WORD

    Question

  • Hola. Quisiera que al dar a un boton se mostrase un documento que tengo en una carpeta.

    Podria ser Word o PDF.

    desde visual basic 2008

    Gracias

    Juan Carlos

    Thursday, July 08, 2010 5:08 PM

Answers

  • Hola, Juan Carlos:

    Para abrir un archivo con la aplicación que tiene registrada la extensión del archivo, puedes hacer uso del método Start de la clase Process:

           Try
                Process.Start("C:\Mis documentos\Archivo.pdf")

            Catch ex As Exception
                MessageBox.Show(ex.Message)

            End Try

    Un saludo


    Enrique Martínez [MS MVP - VB]
    Thursday, July 08, 2010 5:39 PM
    Moderator
  • "fapita" escribió:

    > En la aplicación de escritorio que estoy generando con el VB Net 2008
    > muestro un pdf a través de un linklabel con la instrucción
    > Proccess.Start(ruta) hasta aquí todo de 10, el problema está cuando
    > genero un Setup para mi programa y lo instalo en otra.
    >
    > El error es que no encuentra el archivo pdf
    >
    > Mi pregunta es entonces como hacer para decirle donde están los pdf
    > que quiero mostrar

    Hola:

    Si desconoces la ruta exacta donde se encuentra el archivo que deseas abrir, va a ser complicado que puedas mostrar el documento, porque en un PC podrá encontrarse en C:\Pepe\Archivo.pdf, y en otro puede encontrarse en D:\Documentos\Luis\Archivo.pdf.

    En lugar de pasar al método Start una ruta absoluta que indique la ubicación exacta del documento (C:\Mis documentos\Archivo.pdf), podrías pasar una ruta relativa (..\.\Archivo.pdf). Pero ¡claro! La ruta relativa depende del directorio actual de trabajo, es decir, del directorio devuelto por el método IO.Directory.GetCurrentDirectory, y en todos los PCs, el archivo deberá encontrarse en la misma unidad y carpeta.

    Por ejemplo, vamos a suponer que todos los PCs tienen en la unidad C una carpeta llamada Documentos\Pdf\, y en dicha carpeta hay un archivo llamado Archivo.pdf. Suponiendo que el ejecutable de nuestra aplicación se encuentra en la carpeta \Programas\NombreAplicacion, establecerías la ruta relativa de la siguiente manera:


            ' Establecemos el directorio actual de trabajo de la aplicación
            ' en la raíz de la unidad C.
     '
            IO.Directory.SetCurrentDirectory("C:\")

            Dim path As String = ".\Documentos\Pdf\Archivo.pdf"

            MostarPdf(path)


        Public Sub MostarPdf(ByVal path As String)

            Try
                Process.Start(path)

            Catch
                MessageBox.Show("Archivo no encontrado.")

            End Try

        End Sub

    Pero insisto, que en todos los PCs tienen que existir la misma estructura de carpetas y nombre de archivo, salvo que habilites en tu aplicación un mecanismo para que el usuario introduzca la ruta donde se encuentra el archivo.


    Un saludo


    Enrique Martínez [MS MVP - VB]
    Tuesday, August 31, 2010 7:41 AM
    Moderator

All replies

  • Hola, Juan Carlos:

    Para abrir un archivo con la aplicación que tiene registrada la extensión del archivo, puedes hacer uso del método Start de la clase Process:

           Try
                Process.Start("C:\Mis documentos\Archivo.pdf")

            Catch ex As Exception
                MessageBox.Show(ex.Message)

            End Try

    Un saludo


    Enrique Martínez [MS MVP - VB]
    Thursday, July 08, 2010 5:39 PM
    Moderator
  • Perfecto.

    Gracias SoftJaén

     

    Saludos

    Juan Carlos

     

    Thursday, July 08, 2010 6:24 PM
  • Hola SoftJaén quisiera que me ayudes si es posible en lo siguiente:

    En la aplicación de escritorio que estoy generando con el VB Net 2008 muestro un pdf a través de un linklabel con la instrucción Proccess.Start(ruta) hasta aquí todo de 10, el problema está cuando genero un Setup para mi programa y lo instalo en otra.

    El error es que no encuentra el archivo pdf

    Mi pregunta es entonces como hacer para decirle donde están los pdf que quiero mostrar

    Agradezco desde ya tu ayuda

    Saludos


    Fabri
    Friday, August 20, 2010 9:00 PM
  • "fapita" escribió:

    > En la aplicación de escritorio que estoy generando con el VB Net 2008
    > muestro un pdf a través de un linklabel con la instrucción
    > Proccess.Start(ruta) hasta aquí todo de 10, el problema está cuando
    > genero un Setup para mi programa y lo instalo en otra.
    >
    > El error es que no encuentra el archivo pdf
    >
    > Mi pregunta es entonces como hacer para decirle donde están los pdf
    > que quiero mostrar

    Hola:

    Si desconoces la ruta exacta donde se encuentra el archivo que deseas abrir, va a ser complicado que puedas mostrar el documento, porque en un PC podrá encontrarse en C:\Pepe\Archivo.pdf, y en otro puede encontrarse en D:\Documentos\Luis\Archivo.pdf.

    En lugar de pasar al método Start una ruta absoluta que indique la ubicación exacta del documento (C:\Mis documentos\Archivo.pdf), podrías pasar una ruta relativa (..\.\Archivo.pdf). Pero ¡claro! La ruta relativa depende del directorio actual de trabajo, es decir, del directorio devuelto por el método IO.Directory.GetCurrentDirectory, y en todos los PCs, el archivo deberá encontrarse en la misma unidad y carpeta.

    Por ejemplo, vamos a suponer que todos los PCs tienen en la unidad C una carpeta llamada Documentos\Pdf\, y en dicha carpeta hay un archivo llamado Archivo.pdf. Suponiendo que el ejecutable de nuestra aplicación se encuentra en la carpeta \Programas\NombreAplicacion, establecerías la ruta relativa de la siguiente manera:


            ' Establecemos el directorio actual de trabajo de la aplicación
            ' en la raíz de la unidad C.
     '
            IO.Directory.SetCurrentDirectory("C:\")

            Dim path As String = ".\Documentos\Pdf\Archivo.pdf"

            MostarPdf(path)


        Public Sub MostarPdf(ByVal path As String)

            Try
                Process.Start(path)

            Catch
                MessageBox.Show("Archivo no encontrado.")

            End Try

        End Sub

    Pero insisto, que en todos los PCs tienen que existir la misma estructura de carpetas y nombre de archivo, salvo que habilites en tu aplicación un mecanismo para que el usuario introduzca la ruta donde se encuentra el archivo.


    Un saludo


    Enrique Martínez [MS MVP - VB]
    Tuesday, August 31, 2010 7:41 AM
    Moderator
  • Hola gente...

    He realizado los pasos que recomiendan para abrir un archivo .pdf desde un control en C#, y al principio los resultados fueron óptimos. Pero días después intenté ejecutarlo nuevamente y me encuentro con el siguiente mensaje de error: "No se ha encontrado la aplicación". Como si el archivo al que hago referencia no existiera o algo así... No puedo solucionarlo aún, en este momento estoy pasando un antivirus por las dudas sea algo de eso, pero no creo que solucione mi problema... ¿Alguna sugerencia y/o recomendación? Desde ya, muchas gracias!!!

    Tuesday, January 17, 2012 4:25 PM
  • "Ing. Guile" escribió:

    > He realizado los pasos que recomiendan para abrir un archivo .pdf
    > desde un control en C#, y al principio los resultados fueron óptimos.
    > Pero días después intenté ejecutarlo nuevamente y me encuentro con el
    > siguiente mensaje de error: "No se ha encontrado la aplicación".
    > Como si el archivo al que hago referencia no existiera o algo así...
    > No puedo solucionarlo aún, en este momento estoy pasando un antivirus
    > por las dudas sea algo de eso, pero no creo que solucione mi problema...
    > ¿Alguna sugerencia y/o recomendación? Desde ya, muchas gracias!!!

    Hola:

    El método Start de la clase Process no tiene mucho misterio, y si has comenzado a obtener una excepción del tipo Win32Excepction con ese mensaje de error de la noche a la mañana, puede que se deba a que se haya eliminado la asociación existente entre el tipo de archivo que deseas abrir y la aplicación que lo abre, porque quiero entender que la aplicación o programa se encuentra instalado.

    ¿De qué tipo de archivo o extensión estamos hablando?

    ¿Que es un problema debido a virus? Pues no tengo ni idea.

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.

    Wednesday, January 18, 2012 4:59 PM
    Moderator