Bom dia,
Pessoal achei um codigo que pelo menos comigo funcionou, mas estou com
um problema, quem sabe alguem possa me dar um help, vou postar o
codigo e em baixo vou explicar o que se passa.
Option Explicit
Private Type DOCINFO
pDocName As String
pOutputFile As String
pDatatype As String
End Type
Private Declare Function OpenPrinter Lib "winspool.drv" _
Alias "OpenPrinterA" (ByVal pPrinterName As String, _
phPrinter As Long, ByVal pDefault As Long) As Long
Private Declare Function StartDocPrinter Lib "winspool.drv" _
Alias "StartDocPrinterA" (ByVal hPrinter As Long, _
ByVal Level As Long, pDocInfo As DOCINFO) As Long
Private Declare Function StartPagePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function WritePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long, pBuf As Any, _
ByVal cdBuf As Long, pcWritten As Long) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function EndDocPrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function EndPagePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Sub CancelButton_Click()
Exit Sub
Unload Me
End Sub
Private Sub Form_Load()
Dim i As Integer
Dim Impressoras As Printer
cboImpressora.Clear
For i = 0 To Printers.Count - 1
cboImpressora.AddItem Printers(i).DeviceName
Next
If cboImpressora.ListCount > 0 Then cboImpressora.ListIndex = 0
End Sub
Private Sub OKButton_Click()
Dim Impressoras As Printer
Dim lhPrinter As Long, retVal As Long
Dim lpcWritten As Long, lDoc As Long
Dim sWrittenData As String, MyDocInfo As DOCINFO
Dim i As Integer
Dim x As Integer
For Each Impressoras In Printers
Set Printer = Impressoras
If Impressoras.DeviceName = cboImpressora.Text Then Exit For
Next
retVal = OpenPrinter(Printer.DeviceName, lhPrinter, 0)
If retVal = 0 Then
MsgBox "Printer Not found"
Exit Sub
End If
MyDocInfo.pDocName = "teste.txt"
MyDocInfo.pOutputFile = vbNullString
MyDocInfo.pDatatype = vbNullString
lDoc = StartDocPrinter(lhPrinter, 1, MyDocInfo)
Dim fs, a
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\teste.txt", True)
a.Close
Open "c:\teste.txt" For Output As #1
Print #1, Chr(27) & Chr(64); 'Inicializa impressora
Print #1, Chr(27) & Chr(120) & "1"; 'Definir fontes LQF
Print #1, Chr(27) & Chr(107) & "0"; 'Definir fontes Roman
Print #1, Chr(27) & Chr(80); 'Espaçamento 12CPI linha
Print #1, Chr(27) & Chr(48); 'Espaçamento entre linhas
Print #1,
Print #1,
Print #1,
Print #1, Tab(133); Limpa_Texto("PRESTAÇÃO DE SERV."); Tab(153);
Trim(frmCTRC.txtCFOP.Text)
Print #1, Tab(131); Trim(frmCTRC.txtData.Text)
Close #1
Call StartPagePrinter(lhPrinter)
Open "c:\teste.txt" For Input As #2
sWrittenData = Input(LOF(2), #2) 'imprimindo
Close #2
retVal = WritePrinter(lhPrinter, ByVal sWrittenData,
Len(sWrittenData), lpcWritten)
retVal = EndPagePrinter(lhPrinter)
retVal = EndDocPrinter(lhPrinter)
retVal = ClosePrinter(lhPrinter)
Problema: Qdo mando imprimir o txt ele pula uma linha entre os
comandos abaixo:
Print #1, Tab(133); Limpa_Texto("PRESTAÇÃO DE SERV."); Tab(153);
Trim(frmCTRC.txtCFOP.Text)
Print #1, Tab(131); Trim(frmCTRC.txtData.Text)
mas no txt qdo abro, ele esta normal, ou seja, uma linha abaixo da
outra......, não estou entendo o porque esta acontecendo isso, fora
isso, ele esta imprimindo normal para a Epson LX-300, e não esta dando
o salto de pagina.
Obrigado,