martes, 23 de diciembre de 2008

Impresión Draft desde VB2005

Hola, tal y como lo dije anteriormente entre al problema de imprimir en Draft desde VB2005 en una EPSON FX890.
Asi que les contare todo lo que probe y con lo que finalmente quede como solución.

1. Use la API de winspool.drv , pero no respeta algunas configuraciones de la impresora como tamaño de pagina, interlineado o corte de pagina automático, asi que esta solución no es la mas eficiente.

2. Instale el power pack 3 de VB2005 con el que habilita el objeto printer para poder ser usado en VB2005, perooooooo, no reconoce las fuentes dela impresora, yo me imagino que es porque la clase printer trabja de todas formas a traves del framework de .net y este no puede accder a las fuentes de la impresora.. asi queeeeeeeeeeeee........ no me sirve esta solución.

3. En VB6 me funciona perfectamente imprimir Draft con el objeto Printer, solo se debe setear el nombre de la fuente a "Draft 10cpi" (printer.fontname="Draft 10cpi") y listo funciona y respeta las configuraciones de la impresora, solo hay que tener cuidado con el tamaño de página que no puede ser menor a 4" de longitud.
Entonces lo que hice fue hacer una dll en VB6 que contenga una clase con el objeto Printer, luego agregue esta dll a VB2005 y todo funciono de maravillas. Lo unico malo claro es que se depende de las librerias de ejecucion de VB6 como la msvbvm60.dll
Ahi les dejo el codigo de la dll, yo le puse de nombre clsDraft.cls
================================
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "clsDraft"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Option Explicit
Public Fuente As String

Private Sub Class_Initialize()
Fuente = "Draft 10cpi"
End Sub

Public Sub AbreImpresora(Optional NombreDoc As String = "CROMOTEX")
With Printer
' .PaperSize = vbPRPSUser '256
' .Height = 10773 '19.2
' .width = 4083 '7.2
'.Orientation = vbPRORLandscape
.FontName = Fuente
End With
End Sub

Public Sub CierraImpresora()
Printer.EndDoc
End Sub

Public Sub Imprimir(Texto As String, Optional Salto As Boolean = True)
Printer.FontName = Fuente
Printer.Print Texto
End Sub
================================================

Espero le sirva a alguien mas.

Ahhh aun estoy buscando un Reporteador que tambien me permita usar la fuente Draft en Vb2005.

1 comentario:

  1. hola; quiero imprimir un ticket desde Csharp 2010 en una ticketera posd sin usar TrueType , puedo usar esta misma dll?

    ResponderEliminar