Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: bybaal en 3 Abril 2015, 04:08 am



Título: Como imprimir cualquier tipo de archivo en VB.NET
Publicado por: bybaal en 3 Abril 2015, 04:08 am
Necesito imprimir desde VB.NET cualquier archivo (ej: JPG, PNG, DOC, XLS, PDF, PPT) que esté guardado en la pc. Usando el cuadro de diálogo Imprimir., para permitir seleccionar las páginas que quiero imprimir o cualquier otra opción permitida en este diálogo.

Muchas Gracias
por sus aportes


Título: Re: Como imprimir cualquier tipo de archivo en VB.NET
Publicado por: Eleкtro en 20 Diciembre 2015, 08:16 am
Llego bastante tarde a responder (es lo que sucede si se publica en la sección equivocada, jeje), pero, ¿ya solucionaste el problema?, como veo que no recibiste respuesta te dejo alguna ayuda por si acaso...

Puedes hacerlo al menos de dos formas, la primera sería invocando el verbo de impresión del archivo (la constante "print"), con la class Process:
Código
  1. Using p As New Process
  2.    p.StartInfo.FileName = "C:\Imagen.png"
  3.    p.StartInfo.Verb = "Print"
  4.    p.Start()
  5. End Using

Y la segunda manera sería utilizar la class PrintDocument para dibujar la imagen en el evento PrintPage, pero este modo en mi opinión es para tareas más sofisticadas que una simple impresión de un archivo multimedia.

Saludos


Título: Re: Como imprimir cualquier tipo de archivo en VB.NET
Publicado por: bybaal en 8 Enero 2016, 21:41 pm
Discúlpame por demorarme en responder, es que ya casi había dado este tema como sin solución de corto plazo, pero bueno, aquí vamos.

Voy a tratar de explicarlo mejor ya que después me di cuenta que hay librerías que me permiten hacer lo que necesito, lo que pasa es que no me encontré ninguna que fuera free o un código para poder hacerlo.

Lo que en realidad necesito es desde mi programa llevar el control de lo que se imprime en cada impresora local, o sea; el nombre y ubicación de los documentos, cantidad de hojas impresas de los documentos.

Salu2s

PD: puse este problema aquí pensando que alguien me podía ayudar con algún segmento de código, pero si aparece una librería free u otra solución, bienvenida sea.

Llego bastante tarde a responder (es lo que sucede si se publica en la sección equivocada, jeje), pero, ¿ya solucionaste el problema?, como veo que no recibiste respuesta te dejo alguna ayuda por si acaso...

Puedes hacerlo al menos de dos formas, la primera sería invocando el verbo de impresión del archivo (la constante "print"), con la class Process:
Código
  1. Using p As New Process
  2.    p.StartInfo.FileName = "C:\Imagen.png"
  3.    p.StartInfo.Verb = "Print"
  4.    p.Start()
  5. End Using

Y la segunda manera sería utilizar la class PrintDocument para dibujar la imagen en el evento PrintPage, pero este modo en mi opinión es para tareas más sofisticadas que una simple impresión de un archivo multimedia.

Saludos


Título: Re: Como imprimir cualquier tipo de archivo en VB.NET
Publicado por: Eleкtro en 9 Enero 2016, 05:00 am
Hay muchas soluciones en Google, pero muchas de ellas están desactualizadas y/o son demasiado rebuscadas e ineficientes ya que recurren a código no administrado, cuando supuestamente sería suficiente con utilizar la class PrintQueue para monitorear la cola de una impresora...
  • System.Printing.PrintQueue Class - MSDN (https://msdn.microsoft.com/en-us/library/system.printing.printqueue.aspx)

...Busca en Google ejemplos sobre el uso de esa class para tus propósitos.

Si quieres algo ya hecho, lo más sencillo tal vez sea utilizar esta librería:
  • PrintQueueWatch (https://printqueuewatch.codeplex.com/wikipage?title=Getting%20started&referringTitle=Home)

+
  • http://www.codeproject.com/Articles/3313/Monitoring-a-Printer-Queue-from-VB-NET
  • http://www.codeproject.com/Articles/51085/Monitor-jobs-in-a-printer-queue-NET
  • https://social.msdn.microsoft.com/Forums/vstudio/en-US/a7160b44-0984-48c4-afef-b9a6ee4a8483/monitoring-printer-spool-and-copy-file?forum=csharpgeneral
  • http://www.merrioncomputing.com/Programming/VBDotNet/WatchPrinter.htm

Saludos.