jueves, 28 de diciembre de 2017

Imprimir sin abrir desde vb.net

Imprimir un documento sin abrirlo desde vb.net

La idea es poder abrir un documento en PDF y enviarlo a la impresora que nosotros le indiquemos

en la linea p.StartInfo.Arguments hemos puesto como impresora la XPS de microsoft, pero podemos poner la nuestra "HP Deskjet" o cualquier otra. Esto permite abrir el documento y enviarlo a imprimir por la impresora especifica

En la linea p.WaitForExit(5000) espera 5 segundos (5000 milisegundos) para procesar, realmente no es necesario pero lo he utilizado para envie correctamente el archivo a la cola de impresión, solo me he encontrado alguna vez que si el archivo es muy grande, no envia el doumento correctamente a imprimir (faltan hojas)

Closemainwindow será el proceso que cierre la ventana principal, yo lo he sustituido por kill, porque se quedaba la aplicación del adobe reader abierta.


Using p As New Process

p.StartInfo.FileName = "C:\ruta\del\documento.pdf"
p.StartInfo.Verb = "PrintTo"
p.StartInfo.Arguments = Chr(34) & "Microsoft XPS Document Writer" & Chr(34)
p.StartInfo.CreateNoWindow = True
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
p.Start()
p.WaitForExit(5000)
'p.CloseMainWindow()
p.Kill()
p.Close()

End Using


Espero que os sirva