Página 1 de 1

como imprimir em modo console ?

Enviado: 15 Dez 2021 10:40
por Trazom
Ola amigos

Fiz a conversao para harbour ainda em modo console (a versao win tb esta sendo elaborada mas ainda nao terminei) como tenho alguns clientes que insistem em usar DOS continuo atualizando toda a regra de negocio em modo console mesmo, agora com o advento no win11 nao estou mais conseguindo imprimir, estou gerando o arquivo txt e o usuario se vira pra converter, como posso gerar um pdf diretamente em modo console ? ou ainda, como posso abrir uma janela for windows a partir do modo console e imprimir pela miniprint ?

como imprimir em modo console ?

Enviado: 15 Dez 2021 12:06
por Jairo Maia
Em se tratando dos sistemas rodando sob DOS, nada muda, e nos sistemas rodando sob Windows, veja se esse exemplo ajuda:

Código: Selecionar todos

Function Main()
 Local aPrinters, cPrinter, nPrn
 Local cFilePrint := "SeuArquivo.Txt"

 Clear Screen
 
 aPrinters := GetPrinters()
 
 nPrn := AChoice( 12, 11, 16, 69, aPrinters, .T. )

 If nPrn != 0
 
  cPrinter := aPrinters[ nPrn ]

  Hb_Alert( "Imprimir em:;;" + cPrinter )
  
  Win_PrintFileRaw( cPrinter, cFilePrint, "Teste de Impressão" )

 EndIf

Return Nil

como imprimir em modo console ?

Enviado: 15 Dez 2021 20:49
por Trazom
como assim nada muda ?
veja so, a partir da instalaçao de uma certa versao de windows, não é mais possível imprimir em lpt1, como fazia com clipper
aí passei a gerar a impressao num arquivo txt agora preciso fazer imprimir esse txt usando o compilador do harbour 3.4 em modo console mesmo usando @ say, @get

o que preciso é uma converter esse arquivo em pdf pelo menos, pra fazer o relatorio eu uso ?'cadalinha que quero imprimir cooloco assim'+variaveis

como imprimir em modo console ?

Enviado: 15 Dez 2021 22:02
por Itamar M. Lins Jr.
Olá!
a partir da instalaçao de uma certa versao de windows, não é mais possível imprimir em lpt1
Qualquer versão do windows imprime em LPTX inclusive o LINUX. O problema é que não vem mais a porta LPT1 e as seriais, fisicamente falando.
LPTX é uma porta. Pode ser COM1, USB001, USB002 etc..
Porta não é leiaute(conteúdo) de arquivo.
Aqui no forum temos diversos exemplos, do simples ao complicado. Esse que foi postado é o "feijão com arroz", mas tem mais diversas opções.
Hwgui, Minigui... Vai depender da sua lib gráfica. E se usa console pode usar winprn "a classe", tem a classe adaptada pelo José Quintas que gera PDF... Procure aqui no forum.

Saudações,
Itamar M. Lins Jr.

como imprimir em modo console ?

Enviado: 15 Dez 2021 22:28
por Trazom
Valeu pessoal, muito obrigado, resolveu

Agora gera diretamente o pdf como eu queria !

Eu é que estava receoso em usar usar as libs que acompanham o harbour so fiz a conversao direta do clipper mesmo, agora ja vi que todas essas libs estao aí pra serem usadas e nao vao causar problemas como no antigo clipper.

Obrigado mesmo, um monte de horizontes se abriram agora.... vcs sao demais.!

como imprimir em modo console ?

Enviado: 15 Dez 2021 23:28
por Trazom
porém to gerando pdf mas nao tem conteudo, fiquei na duvida agora se usando win_printfileraw() vai funcionar para impressoras do windows

bom de qualquer forma, valeu muito o aprendizado, amanha continuamos

como imprimir em modo console ?

Enviado: 17 Dez 2021 10:44
por Itamar M. Lins Jr.
Olá!
mas nao tem conteudo,
Só vai funcionar da forma que está querendo se usar a classe winprn.

Pedaço de código para dar uma noção.

Código: Selecionar todos

oPrn := win_prn():New(rtrim(aPrn[oPrint]))
oPrn :LandScape := .F.
oPrn :FormType  := FORM_A4
oPrn :Copies    :=  1

If !oPrn:Create()
    hwg_Msginfo("Não foi criado documento")
    Return Nil
Else

   If !oPrn:startDoc("Imprimindo Livros de Entradas")

      hwg_Msginfo("Erro na Impressora")
      Return Nil

   Else

      CabLivroEntradasII()

... etc e tals...

return .t.

***************************
Function CabLivroEntradasII
***************************
*
*
 oPagina:refresh()
 oPrn:SetPrc(4,0)
// oPrn:CharSet(0)
// oPrn:Bold(0)
 oprn:SetFont('Lucida Console',10,{-3,60})
 oprn:Textout(padc('LIVRO REGISTRO DE ENTRADAS - RE - MODELO P1/A',130),.t.)
 //oPrn:SetFont('Lucida Console',7,0)
 oPrn:SetFont( "Lucida Console", 8, { 3, -50 } )

  linha :='|'+replicate('-',129)+'|'
 oprn:Textout(linha,.t.)
 oprn:Textout('|                                  R E G I S T R O    D E    E N T R A D A S                    |  (a) CODIGO DE VALORES FISCAIS  |',.t.)
 oprn:Textout('|                                                                                               |---------------------------------|',.t.)
 oprn:Textout('| Firma: '+em->empresa +space(27)                   +                                          '| 1 - OPERACOES COM CREDITO DO    |',.t.)
 oprn:Textout('|                                                                                               |     IMPOSTO                     |',.t.)
 oprn:Textout('| Insc.Est.: '+em->i_e +space(13)+ 'CNPJ: '+ em->cgc +space(36)           +                    '| 2 - OPER. SEM CREDITO DO IMPOSTO|',.t.)
 oprn:Textout('|                                                                                               |     ISENTAS OU NAO TRIBUTADAS   |',.t.)
 oprn:Textout('| Folha: '+ zero_esq(nPagina,4)+spac(27)+'MES OU PERIODO/ANO: '+ pad(mes(nMes)+'/'+cAno,36)+   '| 3 - OPER. SEM CREDITO DO IMPOSTO|',.t.)
 oprn:Textout('|                                                                                               |     OUTRAS                      |',.t.)
 oprn:Textout('+--------+---------------------------------------------+-------------+----------+---------------------------------+---------------+',.t.)
 oprn:Textout('|        |        DOCUMENTOS FISCAIS                   |             |          VALORES FISCAIS                   |               |',.t.)
 oprn:Textout('|DATA DE +---+---+---------+--------+--------------+---+             +----+----+---+------------------------------+               |',.t.)
 oprn:Textout('|        |ES-|SE-|         |DATA DO |   CODIGO     |UF |    VALOR    |    |    |   |   BASE     |     |  IMPOSTO  |               |',.t.)
 oprn:Textout('|        |   |RIE|         |        |              |   |             |    |ICMS|COD| DE CALCULO | ALI-|           |  OBSERVACOES  |',.t.)
 oprn:Textout('|        |PE-|SUB| NUMERO  |        |              |ORI|   CONTABIL  |CFOP|    |   |     OU     |QUOTA| CREDITADO |               |',.t.)
 oprn:Textout('|ENTRADA |   |SE-|         |DOCUMEN-|  EMITENTE    |GEM|             |    |IPI |(A)|  VALOR DA  |     |           |               |',.t.)
 oprn:Textout('|        |CIE|RIE|         |TO      |              |   |             |    |    |   |  OPERACAO  |     |           |               |',.t.)
 oprn:Textout('+--------+---+---+---------+--------+--------------+---+-------------+----+----+---+------------+-----+-----------+---------------+',.t.)

Aqui no forum tem diversos exemplos, procura ai...

Saudações,
Itamar M. Lins Jr.

como imprimir em modo console ?

Enviado: 18 Dez 2021 08:10
por paiva
se vc ja gera em TXT


faça


xfile := Strtran( xfile, [.pdf], "" )
Erase_xfile = alltrim(xfile) + [.pdf]
erase &Erase_xfile
seta_tamanho_pdf()

xrun = [\dbdc\dosprint /FILE /PDF ] + cCpi + ccpil + Arquivo

MyRun(xrun)
xfile = alltrim(xfile) + [.pdf]

como imprimir em modo console ?

Enviado: 20 Dez 2021 08:21
por JoséQuintas
Trazom escreveu:como posso abrir uma janela for windows a partir do modo console e imprimir pela miniprint ?
Acho que não perceberam um detalhe, miniprint é HMG, talvez as soluções do Harbour não sirvam.