Página 1 de 1

Sugestão de impressão harbour - arquivo txt compartilhado

Enviado: 26 Mai 2015 20:12
por Marcio_Carneiro
Olá amigos.

Estou utilizando a impressão via usb, como descobri aqui no forum.

Eu permito ao usuário selecionar a forma de saída (LPT1,LPT2,USB,ARQUIVO)

No caso da saída USB, dou um set printer to usb.txt, e quando finalizo o relatório, envia para uma procedure que utiliza os recursos do harbour para imprimir.

O problema é este arquivo usb.txt, que quando em rede dá erro de compartilhamento, o que é obvio.

Pergunto: como os amigos sugeririam para resolver este problema.
Estou sem idéia para tratar isto

Sugestão de impressão harbour - arquivo txt compartilhado

Enviado: 26 Mai 2015 20:59
por Eolo
Como o Harbour acessa direto qualquer impressora instalada no Windows, pra que gerar o TXT?
Com a Win32prn(), vc imprime direto.

Sugestão de impressão harbour - arquivo txt compartilhado

Enviado: 26 Mai 2015 21:49
por Toledo
Marcio_Carneiro escreveu:No caso da saída USB, dou um set printer to usb.txt
Neste caso, crie o txt sempre no computador local, por exemplo: set printer to c:\temp\usb.txt

Abraços,

Sugestão de impressão harbour - arquivo txt compartilhado

Enviado: 26 Mai 2015 22:24
por Marcio_Carneiro
obrigado amigos..


Toledo, as boas respostas estão na nossa frente mas não conseguimos enxergar. Essa sua sugestão já me deu a luz. Obrigado!

Eolo, sua sugestão é interessante: poderia disponibilizar uma parte do seu código, para entender melhor.

Obrigado amigos.

Sugestão de impressão harbour - arquivo txt compartilhado

Enviado: 27 Mai 2015 11:03
por Eolo
Eolo, sua sugestão é interessante: poderia disponibilizar uma parte do seu código, para entender melhor.
A classe Winb32prn() é bastante extensa, faz tudo e mais um pouco. Há uma série de posts no Forum falando do seu uso, dê uma pesquisada. Também, convém dar uma olhada no Help do xHarbour, já publicado aqui no Forum.

Em resumo (exemplo):
- vc cria uma folha A4 “virtual” (ou de qq outro tamanho)
- escreve o que quiser nela, usando qq fonte do Windows, em qq tamanho e cor
- imprime linha 10 usando Arial 12 Preto e, na linha 11, usa Verdana 20 Vermelho, etc.
- a impressão é em pixels, mas há comandos pra fazer a ponte com o linha/coluna do Clipper
- imprime imagens – usando a Win32bmp()
- imprime fora de ordem: vc pode imprimir na linha 20 e depois voltar pra linha 2
- usa a impressora padrão, selecionada com GetDefaultPrinter() ou
- roda a GetPrinter() e seleciona uma das impressoras instaladas
- acabou o relatório? EndDoc() fecha o processo e manda a impressão pro Windows tomar conta.

Um exemplo do Help:
printer := GetDefaultPrinter() // aponta para a impressora padrão do Windows
oPrinter := Win32Prn():new(printer) // creates the object
oPrinter:create() // requests system resources
oPrinter:startDoc() // begins a document
oPrinter:textOut( "Hello World" ) // print output methods
oPrinter:endDoc() // ends document definition and prints
oPrinter:destroy() // releases system resources