Clipper On Line • Ver Tópico - Impressao em impressoras via putty

Impressao em impressoras via putty

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Impressao em impressoras via putty

Mensagempor narlem » 27 Jan 2010 15:48

Olá,

Alguem aqui consegue imprimir via putty em qualquer impressora que esteja instalada no windows ou no linux, ou seja o sistema estaria em um servidor linux, e sendo acessado via putty de uma estação windows, atualmente eu uso os comando chr(027)+chr(... para compactar as letras em 10 cpi, 12 cpi, etc..., mas tem algumas hp que nao aceitam estes códigos de compactacao, e tem tambem as cannon, lexmark e outras diferentes das hp e epson, entao a minha ideia seria o seguinte,
eu atulmente já gero um arquivo texto e envio para a impressora, então eu precisaria de algo no xharbour linux parecido com o win32prn do xharbour windows, onde eu ativaria a impressao 20 cpi, e o windows ou o linux onde esta a impressora, e que já tem os drives da impressora instalados, ativaria a compactacao em cpi que eu desejaria, e eu nao teria de preocupar com qualquer impressora, ou seja,
eu ativo 10 cpi e o windows envia este comando no padrao da impressora, e a impressora ativa 10 cpi por exemplo.

Desde já antecipo meus agradecimentos a quem puder me ajudar

Narlem G. A. Santos
narlem
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 32
Data de registro: 24 Set 2004 14:34
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Impressao em impressoras via putty

Mensagempor sygecom » 31 Jan 2010 10:01

Infelizmente não tem o que resolva de modo facil a impressão dos CHR() em algumas impressoras, isso teria que ser refeito.
Se você tiver usando CUPS e quiser deixar a impressão livre para todas as impressoras basta alterar o arquivo /etc/cups/cupsd.conf e adicionar a linha abaixo:
BrowseAddress ALL

A mehor saida é gerar um arquivo PDF já formatado, ai sim, você podera mandar imprimir esse PDF com toda essa formatação de onde quiser, para isso você não precisa desfazer o que você já tem pronto, tens que apenas fazer um nova função que leia esse seu relatorio e gere um PDF e identifique os CHR() para poder mudar as fontes, tamanho e etc...conforme ele for lendo o seu arquivo texto. Eu postei aqui no forum um exemplo de como uso isso tanto em Windows como para Linux.
Exemplo:
*******************************
Function GERA_PDF(cARQ, vABRE )
*******************************
PRIVATE oDlgHabla:=NIL
MsgRun("Aguarde Gerando Documento PDF...")
cText := memoread( cArq )
nLines := mlcount( cText, 150 )

cFileToSave := "meupdf.pdf"  // nome do PDF

#ifdef __XHARBOUR__
   Private AMSG := {}, CIMG
   set(105,1)
   set(106,1)

   vAUTOR=""
   PdfNew(cFileToSave,6,842,595,1,20,,,) 
   PdfStartPage( {vAUTOR} , .T. )
   HB_SETLANDSCAPE(.T.)

   for nA := 1 to nLines
      cLinha := memoline( cText, 150, nA, 1, .F. )

      Aadd(AMSG,cLinha)
   next

   PdfDrawPage( AMSG )
   PdfEndPage()
   PdfEnd()
#else
   Private page, height, width, def_font, font
   Private pdf := HPDF_New()

   if pdf == NIL
      Fim_Run()
      msgstop( " Erro ao tentar gerar o Arquivo Pdf, Favor Tente novamente","Aviso do Sistema" )
      Return("")
   endif

   /* set compression mode */
   HPDF_SetCompressionMode( pdf, HPDF_COMP_ALL )
   *HPDF_SetPassword(pdf, "senha","leonardo" )  // colocar senha no PDF

   page := HPDF_AddPage(pdf)
   height := HPDF_Page_GetHeight(page)
   width  := HPDF_Page_GetWidth(page)

   def_font := HPDF_GetFont( pdf, "Helvetica", NIL )
   HPDF_Page_BeginText( page )
   HPDF_Page_MoveTextPos( page, 10, height - 10 )

   vCONT=0
   for nA := 1 to nLines
      cLinha := memoline( cText, 150, nA, 1, .F. )
      font := HPDF_GetFont( pdf, "Courier" , NIL )
      HPDF_Page_SetFontAndSize( page, def_font, 7 )

      HPDF_Page_SetFontAndSize( page, font, 7 )
      HPDF_Page_ShowText( page, cLinha )
      HPDF_Page_MoveTextPos( page, 0, -10 )

      vCONT=vCONT+1
      IF vCONT=80
         page := HPDF_AddPage(pdf)
         HPDF_Page_SetLineWidth(page, 1)

         HPDF_Page_BeginText( page )
         HPDF_Page_MoveTextPos( page, 10, height - 10 )
         vCONT = 0
      ENDIF
   next

   HPDF_Page_EndText( page )
   HPDF_SaveToFile( pdf, cFileToSave )

   HPDF_Free( pdf )
#endif

Fim_Run()
IF vABRE="S"
   Abre_arquivo( cFileToSave )  //aqui ele mostra na tela o PDF gerado
ENDIF
Return(cFileToSave)
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Re: Impressao em impressoras via putty

Mensagempor narlem » 03 Fev 2010 11:29

Olá,

Estava viajando, somente hoje vi a sua resposta, vou tentar fazer funcionar aqui e qualquer novidade e escrevo aqui de novo.

Mas desde já muito obrigado

Narlem G. A. Santos
narlem
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 32
Data de registro: 24 Set 2004 14:34
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Impressao em impressoras via putty

Mensagempor lugab » 07 Fev 2016 17:46

Boa tarde, pessoal, Leonardo....

Preciso das funções abaixo, para testar o código postado acima pelo Leonardo.
Certamente elas fazem parte de arquivos . LIB e .CH
Alguém pode disponoibilizar pra mim ?

Eu uso o Xharbour 1.0.0 e Borland 5.0

xHarbour Compiler build 1.0.0 (SimpLex)
Compiling 'xvsigt.prg'...
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_PDFNEW' referenced from D:\MAX\XVSIGT\GERAPDF.OBJ
Error: Unresolved external '_HB_FUN_PDFSTARTPAGE' referenced from D:\MAX\XVSIGT\GERAPDF.OBJ
Error: Unresolved external '_HB_FUN_HB_SETLANDSCAPE' referenced from D:\MAX\XVSIGT\GERAPDF.OBJ
Error: Unresolved external '_HB_FUN_PDFDRAWPAGE' referenced from D:\MAX\XVSIGT\GERAPDF.OBJ
Error: Unresolved external '_HB_FUN_PDFENDPAGE' referenced from D:\MAX\XVSIGT\GERAPDF.OBJ
Error: Unresolved external '_HB_FUN_PDFEND' referenced from D:\MAX\XVSIGT\GERAPDF.OBJ


abaixo, a função completa postada pelo Leonardo
*******************************
Function GERA_PDF(cARQ, vABRE )
*******************************
PRIVATE oDlgHabla:=NIL
MsgRun("Aguarde Gerando Documento PDF...")
cText := memoread( cArq )
nLines := mlcount( cText, 150 )

cFileToSave := "meupdf.pdf" // nome do PDF

#ifdef __XHARBOUR__
Private AMSG := {}, CIMG
set(105,1)
set(106,1)

vAUTOR=""
PdfNew(cFileToSave,6,842,595,1,20,,,)
PdfStartPage( {vAUTOR} , .T. )
HB_SETLANDSCAPE(.T.)

for nA := 1 to nLines
   cLinha := memoline( cText, 150, nA, 1, .F. )

   Aadd(AMSG,cLinha)
next

PdfDrawPage( AMSG )
PdfEndPage()
PdfEnd()
#else
Private page, height, width, def_font, font
Private pdf := HPDF_New()

if pdf == NIL
   Fim_Run()
   msgstop( " Erro ao tentar gerar o Arquivo Pdf, Favor Tente novamente","Aviso do Sistema" )
   Return("")
endif

/* set compression mode */
HPDF_SetCompressionMode( pdf, HPDF_COMP_ALL )
*HPDF_SetPassword(pdf, "senha","leonardo" ) // colocar senha no PDF

page := HPDF_AddPage(pdf)
height := HPDF_Page_GetHeight(page)
width := HPDF_Page_GetWidth(page)

def_font := HPDF_GetFont( pdf, "Helvetica", NIL )
HPDF_Page_BeginText( page )
HPDF_Page_MoveTextPos( page, 10, height - 10 )

vCONT=0
for nA := 1 to nLines
   cLinha := memoline( cText, 150, nA, 1, .F. )
   font := HPDF_GetFont( pdf, "Courier" , NIL )
   HPDF_Page_SetFontAndSize( page, def_font, 7 )

   HPDF_Page_SetFontAndSize( page, font, 7 )
   HPDF_Page_ShowText( page, cLinha )
   HPDF_Page_MoveTextPos( page, 0, -10 )

   vCONT=vCONT+1
   IF vCONT=80
    page := HPDF_AddPage(pdf)
    HPDF_Page_SetLineWidth(page, 1)

    HPDF_Page_BeginText( page )
    HPDF_Page_MoveTextPos( page, 10, height - 10 )
    vCONT = 0
   ENDIF
next

HPDF_Page_EndText( page )
HPDF_SaveToFile( pdf, cFileToSave )

HPDF_Free( pdf )
#endif

Fim_Run()
IF vABRE="S"
Abre_arquivo( cFileToSave ) //aqui ele mostra na tela o PDF gerado
ENDIF
Return(cFileToSave)

lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google Adsense [Bot], rogeriohfb e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro