AJUDA IMPRESSÃO

FABRICIOWEB 20/08/2015 08:01:58
#450248
Ola existe um meio de imprimir em 2 impressoras de uma vez, meu sistema imprimi a nota promissória, queria também que imprimisse também um cupom não fiscal mas são 2 impressoras diferentes, portas diferentes.
SINCLAIR 20/08/2015 08:53:33
#450249
Olá, FABRICIOWEB

Se você estiver usando Crystal Reports, basta usar SelectPrinter (exemplo para selecionar a impressora PDFCreator: ObjCR.SelectPrinter [Ô]PDFCreator[Ô], [Ô]PDFCreator[Ô], [Ô]PDFCreator[Ô])

Você selecionaria a primeira impressora (nota promissória) e enviaria a impressão. Depois seleciona a segunda impressora e envia o cupom não fiscal.

Uma outra alternativa seria mudar a impressora padrão para cada impressão. Um roteirio assim:

a) Guarde o nome da impressora padrão
b) Mude a impressora padrão para onde quer que seja impressa a nota promissória
c) Imprima a nota promissória
d) Mude a impressora padrão para onde quer que seja impresso o cumpom fiscal
e) Imprima o cupom fiscal
f) Devolva a impressora padrão para antes das suas impressões (que foi pego no item [Ô]a[Ô])

Se quiser usar esta forma, coloque o código abaixo em um módulo e use chamadas como:

Set objPrinter = GetDefaultPrinter() [ô]Para ter o nome da impressora padrão


e

Call SetaImpressoraPadrao(aqui o nome da impressora a ficar como default) [ô]Para deixar uma impressora como padrão






[ô]--------------------------------------------------------------------------------------------------------------------------------------------------------
[ô] Chamada de API para mudar a impressora padrão !
[ô]--------------------------------------------------------------------------------------------------------------------------------------------------------
Public Declare Function SendMessageTimeout Lib [Ô]user32[Ô] Alias [Ô]SendMessageTimeoutA[Ô] (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Any, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long
Public Declare Function WriteProfileString Lib [Ô]kernel32[Ô] Alias [Ô]WriteProfileStringA[Ô] (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
Public Const WM_WININICHANGE = &H1A
Public Const SMTO_NORMAL = &H0
Public Const HWND_BROADCAST = &HFFFF&

[/c]


[ô]--------------------------------------------------------------------------------------------------------------------------------------------------------
[ô] Chamada de API para saber qual a impressora padrão !
[ô]--------------------------------------------------------------------------------------------------------------------------------------------------------
Public Declare Function GetProfileString Lib [Ô]kernel32.dll[Ô] Alias [Ô]GetProfileStringA[Ô] (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long



[ô]--------------------------------------------------------------------------------------------------------------------------------------------------------
[ô]Para mudar a impressora padrão !
[ô]--------------------------------------------------------------------------------------------------------------------------------------------------------
Public Sub SetaImpressoraPadrao(ByVal NomeDaImpressora As String)
On Error Resume Next

Dim ImpressoraPadrao As String

ImpressoraPadrao = NomeDaImpressora

WriteProfileString [Ô]windows[Ô], [Ô]device[Ô], ImpressoraPadrao & [Ô],[Ô] & ImpressoraPadrao & [Ô],[Ô] & Printer.Port
SendMessageTimeout HWND_BROADCAST, WM_WININICHANGE, 0, [Ô]windows[Ô], SMTO_NORMAL, 1000, 0
End Sub



[ô]--------------------------------------------------------------------------------------------------------------------------------------------------------
[ô]Retorna o nome da impressora padrão, o nome do driver e a porta (todos da impressora padrão) !
[ô]--------------------------------------------------------------------------------------------------------------------------------------------------------
Public Function GetDefaultPrinter() As Printer
On Error Resume Next

Dim strBuffer As String * 254
Dim iRetValue As Long
Dim strDefaultPrinterInfo As String
Dim tblDefaultPrinterInfo() As String
Dim objPrinter As Printer

[ô] pega as informacoes da impressora padrao
iRetValue = GetProfileString([Ô]windows[Ô], [Ô]device[Ô], [Ô],,,[Ô], strBuffer, 254)
strDefaultPrinterInfo = Left(strBuffer, InStr(strBuffer, Chr(0)) - 1)
tblDefaultPrinterInfo = Split(strDefaultPrinterInfo, [Ô],[Ô])
For Each objPrinter In Printers
If objPrinter.DeviceName = tblDefaultPrinterInfo(0) Then
[ô] se achou a impressora padrao então sai
Exit For
End If
Next
[ô] se nao achou retrona nothing
If objPrinter.DeviceName <> tblDefaultPrinterInfo(0) Then
Set objPrinter = Nothing
End If
Set GetDefaultPrinter = objPrinter
End Function

FABRICIOWEB 20/08/2015 09:14:33
#450250
Existe alguma impresso virtual para cupom?
SINCLAIR 20/08/2015 09:33:52
#450252
Depende do que você se refere.

Se fala em um emulador para cupom fiscal, de forma a testar seu software sem precisar da impressora física, a Bematech por exemplo tem.

Se quiser uma impressora virtual para PDF tem CutePDF, PDFCreator, etc.

Especificamente para cupom não sei se tem. Nem consigo vislumbrar uma vantagem para impressora virtual de cupom, já que cupom é um documento a ser entregue ao cliente e, portanto, precisa ser físico.
FABRICIOWEB 20/08/2015 11:02:07
#450260
emulador para cupom fiscal
SINCLAIR 20/08/2015 11:23:06
#450262
Citação:

Se fala em um emulador para cupom fiscal, de forma a testar seu software sem precisar da impressora física, a Bematech por exemplo tem.

FABRICIOWEB 20/08/2015 13:14:18
#450270
To fazendo dessa forma usando um listbox tem como enviar direto para lpt1 a listbox inteira ja pronta?

Tópico encerrado , respostas não são mais permitidas