none
Imprimir un archivo directamente a la impresora sin abrirlo en VB.NET RRS feed

  • Pregunta

  • Hola buenas.

    Como puedo imprimir un archivo con la ruta de dicho archivo sin tener que abrirlo y que directamente imprima por la impresora predeterminada.

    Es decir que al hacer click en un botón me imprima directamente.

    Muchas gracias

    miércoles, 14 de octubre de 2020 13:31

Respuestas

  • Hola Juan

    Si sabes exactamente el formato del fichero que vas a imprimir (sea excel, word un txt etc) puedes usar un proceso creado para dicha aplicación muy concreto y tener mucho más control sobre la impresión.

    Si no es así te pongo un ejemplo genérico para imprimir cualquier fichero siempre y cuando el formato del fichero a imprimir tenga aplicación instalada en el equipo que imprime.

    La variable printername recoge la impresora predeterminada del equipo, puedes poner una a mano  si conoces exactamente el nombre de la impresora, tiene que existir o dará error. Sería fácil preguntar previamente por la lista de impresoras válidas y que el usuario elija pero no te lo pongo por claridad a lo que preguntas.

    Al llamar a la sub debes pasar como argumento el fichero a imprimir. Para llamar a la sub sería:

    Sub Quiero_Imprimir()

    Call PrintArchivo("C:\Datos\Fichero_Ejemplo.txt")

    En Sub

    Sub PrintArchivo(ByVal Path_Fichero As String)
            Try
                Dim printername As String

                Dim oPS As New System.Drawing.Printing.PrinterSettings
                printername = oPS.PrinterName
                Dim Proc As New System.Diagnostics.Process

                Proc.EnableRaisingEvents = True
                Proc.StartInfo.FileName = Path_Fichero 
                Proc.StartInfo.Arguments = Chr(34) + printername + Chr(34)
                Proc.StartInfo.Verb = "Print"
                Proc.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
                Proc.StartInfo.CreateNoWindow = True
                Proc.Start()
              
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

    Un saludo

    • Marcado como respuesta Juan Martinez F miércoles, 14 de octubre de 2020 15:20
    miércoles, 14 de octubre de 2020 15:17

Todas las respuestas

  • Hola:

    > Como puedo imprimir un archivo con la ruta de dicho archivo sin tener que abrirlo y que directamente imprima por la impresora predeterminada. <
    NO se puede.
    Hay multitud de tipos de archivo y para (imrprimir y/o manipular) un archivo, primero se tiene que conocer que tipo de archivo es.

    Un saludo desde Bilbo
    Carlos
    miércoles, 14 de octubre de 2020 15:06
  • Hola Juan

    Si sabes exactamente el formato del fichero que vas a imprimir (sea excel, word un txt etc) puedes usar un proceso creado para dicha aplicación muy concreto y tener mucho más control sobre la impresión.

    Si no es así te pongo un ejemplo genérico para imprimir cualquier fichero siempre y cuando el formato del fichero a imprimir tenga aplicación instalada en el equipo que imprime.

    La variable printername recoge la impresora predeterminada del equipo, puedes poner una a mano  si conoces exactamente el nombre de la impresora, tiene que existir o dará error. Sería fácil preguntar previamente por la lista de impresoras válidas y que el usuario elija pero no te lo pongo por claridad a lo que preguntas.

    Al llamar a la sub debes pasar como argumento el fichero a imprimir. Para llamar a la sub sería:

    Sub Quiero_Imprimir()

    Call PrintArchivo("C:\Datos\Fichero_Ejemplo.txt")

    En Sub

    Sub PrintArchivo(ByVal Path_Fichero As String)
            Try
                Dim printername As String

                Dim oPS As New System.Drawing.Printing.PrinterSettings
                printername = oPS.PrinterName
                Dim Proc As New System.Diagnostics.Process

                Proc.EnableRaisingEvents = True
                Proc.StartInfo.FileName = Path_Fichero 
                Proc.StartInfo.Arguments = Chr(34) + printername + Chr(34)
                Proc.StartInfo.Verb = "Print"
                Proc.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
                Proc.StartInfo.CreateNoWindow = True
                Proc.Start()
              
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

    Un saludo

    • Marcado como respuesta Juan Martinez F miércoles, 14 de octubre de 2020 15:20
    miércoles, 14 de octubre de 2020 15:17
  • Gracias por la información
    miércoles, 14 de octubre de 2020 15:20
  • Hola,

     

    gracias por confirmar que encontraste una respuesta a tu pregunta.

     

    Saludos cordiales

     

    Gabriel Castro

    miércoles, 14 de octubre de 2020 16:18
    Moderador