Printer.Print

17/05/2005 - 22:59 por Irak Rubio | Informe spam
Hola que tal grupo.
Pues con la novedad de que necesito enviar texto simple y llano (o plano
como le llaman) a una impresora, en Visual Basic 6.0 Utilizaba el comando
Printer.Print, pero aqui en net, pues ya no existe ese comando, ahora estoy
utilizando el objeto PrinterDoc (a como dicen los manuales), pero este me
genera texto de tipo grafico) y bueno lo que sucede es que a la impresora le
estoy mandando secuencias de escape, es decir; instrucciones que solo ella
entiende y que deben ir en texto plano. Si le mando esa secuencia con el
objeto printer no me responde.
Alguna idea de como hacerle????

Muchas Gracias

Preguntas similare

Leer las respuestas

#1 Tristan
17/05/2005 - 23:22 | Informe spam
En realidad o mucho me equivoco o el Printer.Print de VB tampoco admitía
enviar secuencias de escape a la impresora.

Creo que en VB tenías que hacer lo mismo que ahora, o utilizar un api de
win32 que envía texto sin procesar a la impresora, o trabajar directamente
sobre el puerto serie.

Para escribir sobre el puerto serie es algo así:


'Puedes utilizar un puerto de red
Dim lpt1 As StreamWriter = GetStreamWriter("LPT1")
lpt1.WriteLine("Texto directo")
lpt1.Close()


Private Function GetStreamWriter(ByVal port As String) As
StreamWriter
Dim hFich As IntPtr = CreateFile(port, GENERIC WRITE,
0, IntPtr.Zero, OPEN EXISTING, 0, IntPtr.Zero)
Dim stream As New FileStream(hFich, FileAccess.Write)
Dim writer As New StreamWriter(stream)
Return writer
End Function

Const GENERIC WRITE As Int32 = &H40000000
Const OPEN EXISTING As Int32 = 3

Public Declare Auto Function CreateFile
Lib "kernel32.dll" (ByVal lpFileName As String, ByVal
dwDesiredAccess As Integer, ByVal dwShareMode As Integer,
ByVal lpSecurityAttributes As IntPtr, ByVal
dwCreationDisposition As Integer, ByVal
dwFlagsAndAttributes As Integer, ByVal hTemplateFile As
IntPtr) As IntPtr



Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Irak Rubio
18/05/2005 - 00:03 | Informe spam
Tal vez, pero en este caso, el objeto printer me ha funcionado bien con los
caracteres de escape.

Se me figura algo asi como un block de notas, que cuando mandas a imprimir
las claves la impresora tambien me lo identifica, pero bueno, vamos a ver...

Gracias voy a probar tu codigo.


"Tristan" escribió:

En realidad o mucho me equivoco o el Printer.Print de VB tampoco admitía
enviar secuencias de escape a la impresora.

Creo que en VB tenías que hacer lo mismo que ahora, o utilizar un api de
win32 que envía texto sin procesar a la impresora, o trabajar directamente
sobre el puerto serie.

Para escribir sobre el puerto serie es algo así:


'Puedes utilizar un puerto de red
Dim lpt1 As StreamWriter = GetStreamWriter("LPT1")
lpt1.WriteLine("Texto directo")
lpt1.Close()


Private Function GetStreamWriter(ByVal port As String) As
StreamWriter
Dim hFich As IntPtr = CreateFile(port, GENERIC WRITE,
0, IntPtr.Zero, OPEN EXISTING, 0, IntPtr.Zero)
Dim stream As New FileStream(hFich, FileAccess.Write)
Dim writer As New StreamWriter(stream)
Return writer
End Function

Const GENERIC WRITE As Int32 = &H40000000
Const OPEN EXISTING As Int32 = 3

Public Declare Auto Function CreateFile
Lib "kernel32.dll" (ByVal lpFileName As String, ByVal
dwDesiredAccess As Integer, ByVal dwShareMode As Integer,
ByVal lpSecurityAttributes As IntPtr, ByVal
dwCreationDisposition As Integer, ByVal
dwFlagsAndAttributes As Integer, ByVal hTemplateFile As
IntPtr) As IntPtr



Juan Carlos Badiola
MVP - C#



Respuesta Responder a este mensaje
#3 Irak Rubio
18/05/2005 - 18:43 | Informe spam
Estimado Tristan, Admito lo que quieras, pero la verdad es que la unica
materia que reprobe fue la de las Apis, y bueno, el codigo que tan
amablemente me has enviado me manda un error de Handle que no pude
identificar.

Esteee... ¿Que me aconsejas hacer?
Gracias nuevamente

"Irak Rubio" escribió:

Tal vez, pero en este caso, el objeto printer me ha funcionado bien con los
caracteres de escape.

Se me figura algo asi como un block de notas, que cuando mandas a imprimir
las claves la impresora tambien me lo identifica, pero bueno, vamos a ver...

Gracias voy a probar tu codigo.


"Tristan" escribió:

> En realidad o mucho me equivoco o el Printer.Print de VB tampoco admitía
> enviar secuencias de escape a la impresora.
>
> Creo que en VB tenías que hacer lo mismo que ahora, o utilizar un api de
> win32 que envía texto sin procesar a la impresora, o trabajar directamente
> sobre el puerto serie.
>
> Para escribir sobre el puerto serie es algo así:
>
>
> 'Puedes utilizar un puerto de red
> Dim lpt1 As StreamWriter = GetStreamWriter("LPT1")
> lpt1.WriteLine("Texto directo")
> lpt1.Close()
>
>
> Private Function GetStreamWriter(ByVal port As String) As
> StreamWriter
> Dim hFich As IntPtr = CreateFile(port, GENERIC WRITE,
> 0, IntPtr.Zero, OPEN EXISTING, 0, IntPtr.Zero)
> Dim stream As New FileStream(hFich, FileAccess.Write)
> Dim writer As New StreamWriter(stream)
> Return writer
> End Function
>
> Const GENERIC WRITE As Int32 = &H40000000
> Const OPEN EXISTING As Int32 = 3
>
> Public Declare Auto Function CreateFile
> Lib "kernel32.dll" (ByVal lpFileName As String, ByVal
> dwDesiredAccess As Integer, ByVal dwShareMode As Integer,
> ByVal lpSecurityAttributes As IntPtr, ByVal
> dwCreationDisposition As Integer, ByVal
> dwFlagsAndAttributes As Integer, ByVal hTemplateFile As
> IntPtr) As IntPtr
>
>
>
> Juan Carlos Badiola
> MVP - C#
>
>
>
Respuesta Responder a este mensaje
#4 Irak Rubio
18/05/2005 - 18:51 | Informe spam
Mira el error que me manda es el siguiente:
Identificador no valido nombre del parametro Handle.

Por cierto, trate de hacer un "truco", creando una dll de VB6 y
referenciandola desde mi proyecto en Net, pero no me funciono porque el
proyecto en Net esta siendo desarrollado en WebService. No se si pudiera
existir algo similar que pueda cargar en WebService pero con un objeto creado
en VB6?

"Irak Rubio" escribió:

Estimado Tristan, Admito lo que quieras, pero la verdad es que la unica
materia que reprobe fue la de las Apis, y bueno, el codigo que tan
amablemente me has enviado me manda un error de Handle que no pude
identificar.

Esteee... ¿Que me aconsejas hacer?
Gracias nuevamente

"Irak Rubio" escribió:

> Tal vez, pero en este caso, el objeto printer me ha funcionado bien con los
> caracteres de escape.
>
> Se me figura algo asi como un block de notas, que cuando mandas a imprimir
> las claves la impresora tambien me lo identifica, pero bueno, vamos a ver...
>
> Gracias voy a probar tu codigo.
>
>
> "Tristan" escribió:
>
> > En realidad o mucho me equivoco o el Printer.Print de VB tampoco admitía
> > enviar secuencias de escape a la impresora.
> >
> > Creo que en VB tenías que hacer lo mismo que ahora, o utilizar un api de
> > win32 que envía texto sin procesar a la impresora, o trabajar directamente
> > sobre el puerto serie.
> >
> > Para escribir sobre el puerto serie es algo así:
> >
> >
> > 'Puedes utilizar un puerto de red
> > Dim lpt1 As StreamWriter = GetStreamWriter("LPT1")
> > lpt1.WriteLine("Texto directo")
> > lpt1.Close()
> >
> >
> > Private Function GetStreamWriter(ByVal port As String) As
> > StreamWriter
> > Dim hFich As IntPtr = CreateFile(port, GENERIC WRITE,
> > 0, IntPtr.Zero, OPEN EXISTING, 0, IntPtr.Zero)
> > Dim stream As New FileStream(hFich, FileAccess.Write)
> > Dim writer As New StreamWriter(stream)
> > Return writer
> > End Function
> >
> > Const GENERIC WRITE As Int32 = &H40000000
> > Const OPEN EXISTING As Int32 = 3
> >
> > Public Declare Auto Function CreateFile
> > Lib "kernel32.dll" (ByVal lpFileName As String, ByVal
> > dwDesiredAccess As Integer, ByVal dwShareMode As Integer,
> > ByVal lpSecurityAttributes As IntPtr, ByVal
> > dwCreationDisposition As Integer, ByVal
> > dwFlagsAndAttributes As Integer, ByVal hTemplateFile As
> > IntPtr) As IntPtr
> >
> >
> >
> > Juan Carlos Badiola
> > MVP - C#
> >
> >
> >
Respuesta Responder a este mensaje
#5 Tristan
18/05/2005 - 22:48 | Informe spam
¿El puerto de tu impresora es LPT1 o es una impresora de red?

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida