Comando de impressão de arquivo.

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

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Comando de impressão de arquivo.

Mensagem por cjp »

Meus caros,

Desde que migrei, recentemente, para o Harbour, estou tentando uma solução para impressão. Já bati cabeça em vários posts deste fórum, mas ainda não consegui o que preciso.

No xharbour, eu imprimia facilmente usando:

Código: Selecionar todos

set print to "nome_da_impressora"
set devi to print
@ xxx,1 say "....."
Pesquisando, achei este post e tentei usar a win_printfileraw() recomendada. Ele efetivamente chama a impressora, mas não imprime. Sai uma página em branco. Testei na impressora que tenho aqui (uma Lexmark Pro 800) e também imprimindo para um pdf.

Verifiquei a configuração da impressora, e ela está com o Raw no Winprint. E a função está retornando 1, não -1.

Também tentei a hb_printfileraw(), mas daí nem compila, não acha a função.

Não existe uma forma simples de imprimir assim no harbour?
Inacio de Carvalho Neto
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Comando de impressão de arquivo.

Mensagem por Pablo César »

Essa questão de imprimir fácil é relativa. pois você tem dois caminhos: imprimir em modo texto ou modo gráfico. A Lexmark é geralmente uma impressora for Windows. Ela precisa dos drives exclusivos dela. Não é uma impressora comum como as de padrão Epson ou HP. Nesse caso, sugiro que você opte pela impressão em modo gráfico, ai não terá nunca problemas.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Comando de impressão de arquivo.

Mensagem por cjp »

E como eu faço para imprimir em modo gráfico?
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Comando de impressão de arquivo.

Mensagem por Jairo Maia »

Olá Inácio,
cjp escreveu:Também tentei a hb_printfileraw(), mas daí nem compila, não acha a função.
A função é PrintFileRaw(), ou Win_PrintFileRaw().
cjp escreveu:E como eu faço para imprimir em modo gráfico?
Quando não usa a função Win_PrintFileRaw() a impressão é modo gráfico.

Impressão em modo Raw, cuja tradução literal é Cru, significa que você irá usar os recursos nativos da impressora. Já no modo gráfico, como o próprio nome diz, você irá usar os recursos gráficos disponíveis na linguagem e SO.

Por exemplo, em modo Raw você não consegue uma fonte diferente da que a impressora tem nativamente, enquanto em modo gráfico as fontes são desenhadas pelos recursos da linguagem que por sua vez usa os recursos do SO e suas fontes disponíveis.

No outro tópico, pedi se você não pode postar uma das rotinas de impressão que você usava no xHarbour, acho que ficaria mais fácil montar um exemplo pra você entender.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Comando de impressão de arquivo.

Mensagem por cjp »

Caro Jairo,

PrintFileRaw() também não funciona.

Eu já havia postado acima um trecho da função, mas vou postar agora ela inteira:

Código: Selecionar todos

function imprelat
         clear
         @ 5,5 say "Antes de iniciar a impressão, coloque na impressora papel rascunho"
         inkey(8)
         do case
            case file("\windows\inforum.cpd")
                 set printer to "Lexm332n"
            case file("\windows\est1.dbf")
                 set printer to "Lexmark E332n"
            otherwise
                 set printer to "Lexmark E332 N"
         endcase
         set devi to print
         vezimp=0
         do while .t.
            nLf=1
            if vezimp>1
               exit
            endif
            @ nLf,2 say Chr(27)+"(s4H"
            @ nLf,2 say Chr(27)+"&d1D"
            @ nLf,2 say "Relatório de audiência do dia";nLf++
            nLf++
            @ nLf,2 say dtoc(dtaud)+" às "+alltrim(hraud)+"h"
            @ nLf,2 say Chr(27)+"(s9H"
            @ nLf,2 say Chr(27)+"&d@"
            nLf++
            nLf++
			nrproc=processo
            if at(" ",processo)=0
               @ nLf,5 say "Processo número: "+substr(processo,1,4)+"/"+substr(processo,5,5)+"-"+substr(processo,10)
            else
               @ nLf,5 say "Processo número: "+substr(processo,1,4)+"/"+substr(processo,5,at(" ",processo)-6)+"-"+substr(processo,at(" ",processo)-1,1)
            endif
            nLf++
            nLf++
			   sele 2
			   if usebase(cpd+"reus")=.t.
			      locate for processo=nrproc
				  if found()
				     @ nLf,5 say "Réu: "+reu;nLf++
					 do while .t.
					    skip
						if eof()
						   exit
						endif
						if processo=nrproc
						   @ nLf,11 say reu;nLf++
						endif
                     enddo
				  endif
			   endif
			   use
			   sele 1
            nLf++
            @ nLf,5 say "Data do fato: "+dtoc(dtfato);nLf++;nLf++
            @ nLf,5 say "Data do recebimento da denúncia: "+dtoc(dtrecebim);nLf++;nLf++
           
            if dtfato<ctod("01/01/2008") .and. !empty(dtfato) //at("2010",processo)#1 .and. at("2009",processo)#1 .and. at("2008",processo)#1
               nLf++
               @ nLf,3 say Chr(27)+"(s6H"
               @ nLf,3 say "Conferir prescrição:";nLf++
               @ nLf,3 say Chr(27)+"(s9H"
               nLf++
               @ nLf,5 say "Art. 109. ...";nLf++ //  A prescri╬Æo, antes de transitar em julgado a senten╬a";nLf++
               @ nLf,5 say "I - em vinte anos, se o máximo da pena é superior a doze;";nLf++
               @ nLf,5 say "II - em dezesseis anos, se o máximo da pena é superior a oito anos";nLf++
               @ nLf,5 say "e não excede a doze;";nLf++
               @ nLf,5 say "III - em doze anos, se o máximo da pena é superior a quatro anos";nLf++
               @ nLf,5 say "e não excede a oito;";nLf++
               @ nLf,5 say "IV - em oito anos, se o máximo da pena é superior a dois anos";nLf++
               @ nLf,5 say "e não excede a quatro;";nLf++
               @ nLf,5 say "V - em quatro anos, se o máximo da pena é igual a um ano ou,";nLf++
               @ nLf,5 say "sendo superior, não excede a dois;";nLf++
               @ nLf,5 say "VI - em 3 (três) anos, se o máximo da pena é inferior a 1 (um) ano.";nLf++
               nLf++
            endif
            nLf++
            id=memotran(alltrim(suspensao),[ ],[ ])
            if !empty(id)
               @ nLf,0 say Chr(27)+"(s7H"
               nLf++
               @ nLf,4 say "Suspensão do processo: "+substr(id,1,24)
               nLf++
               k=25
               do while .t.
                  if alltrim(substr(id,k,25))==""
                     exit
                  else
                     @ nLf,28 say substr(id,k,20)
                     nLf++
                     k=k+20
                  endif
               enddo
            else
               nLf++
               @nLf,5 say "Não teve suspensão do processo"
               nLf++
               nLf++
            endif
            @ nLf,0 say Chr(27)+"(s9H"
     
            nLf++
            id=memotran(alltrim(observac),[ ],[ ])
            if !empty(alltrim(id))
               @ nLf,0 say Chr(27)+"(s6H"
               @ nLf,3 say "Observações: "+substr(id,1,26)
               k=27
               nLf++
               do while .t.
                  if alltrim(substr(id,k,26))==""
                     exit
                  else
                     @ nLf,18 say substr(id,k,26)
                     nLf++
                     k=k+26
                  endif
               enddo
            endif
            @ nLf,0 say Chr(27)+"(s9H"

         nLf++
         if !empty(aditamento)
            @ nLf,0 say Chr(27)+"(s6H"
            @ nLf,5 say "Aditamento da denúncia às fls. "+aditamento; nLf++
            @ nLf,0 say Chr(27)+"(s9H"
         endif

            nLf++
            nLf++
            @ nLf,5 say "Tipo da denúncia: "+substr(tipoimput,1,45);nLf++
            @ nLf,23 say substr(tipoimput,46,45);nLf++
            @ nLf,23 say substr(tipoimput,91,45);nLf++
            @ nLf,23 say substr(tipoimput,136,45);nLf++
            @ nLf,23 say substr(tipoimput,181);nLf++

         nLf++
         for k:= 1 to mlcount(alltrim(tipoden),64)
             @ nLf,5 say memoline(memotran(alltrim(tipoden),[ ],[ ]),64,k,,.f.); nLf++
         next
         @ nLf,0 say Chr(27)+"(s6H"
         nLf++
         nLf++
         @ nLf,4 say "Resumo dos fatos da denúncia:";nLf++;nLf++
         @ nLf,0 say Chr(27)+"(s9H"
         k=1
         for k:= 1 to mlcount(alltrim(fatoden),64)
             @ nLf,6 say memoline(memotran(alltrim(fatoden),[ ],[ ]),64,k,,.f.); nLf++
         next
         nLf++
         nLf++
         @ nLf,2 say Chr(27)+"(s6H"
         @ nLf,3 say "Alegações dos réus:"
         @ nLf,2 say Chr(27)+"(s9H"
         nLf++
         @ nLf,5 say chr(218)+replicate(chr(196),63)+chr(191);nLf++

		    sele 2
			if usebase(cpd+"reus")=.t.
			   locate for processo=nrproc
			   if found()
                  do while .t.
                     if processo#nrproc
					    exit
 					endif	
					 if eof()
					    exit
				     endif
                     if empty(substr(reu,20))			
                        @ nLf,5 say chr(179)+alltrim(reu)+":"
                        @ nLf,30 say chr(179)
                     else
                        @ nLf,5 say chr(179)+substr(reu,1,21)
                        @ nLf,30 say chr(179)
                        @ nLf,69 say chr(179); nLf++
                        @ nLf,5 say chr(179)+alltrim(substr(reu,22))+":"
                        @ nLf,30 say chr(179)
                     endif
                     @ nLf,32 say "Data de nascimento: "+dtoc(dtnascim)
                     @ nLf,69 say chr(179); nLf++
                     @ nLf,5 say chr(179)+"Foto: fl. "+foto
                     @ nLf,30 say chr(179)
                     @ nLf,69 say chr(179); nLf++
                     @ nLf,5 say chr(179)
                     @ nLf,30 say chr(179)
                     @ nLf,32 say "Interr. policial à fl. "+alltrim(flsintdel)+": "
                     @ nLf,69 say chr(179); nLf++
                     @ nLf,5 say chr(179)+"Antecedentes: "
                     @ nLf,30 say chr(179)
                     @ nLf,69 say chr(179); nLf++
            
                     id=memotran(alltrim(intdel),[ ],[ ])
                     ant=memotran(alltrim(anteced),[ ],[ ])
                     k=1
                     y=1
                     do while .t.
                        if alltrim(substr(id,k,32))=="" .and. alltrim(substr(ant,y,22))==""
                           exit
                        else
                           @ nLf,5 say chr(179)+substr(ant,y,22)
                           @ nLf,30 say chr(179)+" "+substr(id,k,32)
                           @ nLf,69 say chr(179); nLf++
                           k=k+32
                           y=y+22
                        endif
                     enddo

                     if !empty(flsintju)
                        @ nLf,5 say chr(179)
                        @ nLf,30 say chr(179)
                        @ nLf,69 say chr(179)
                        nLf++
                        @ nLf,5 say chr(179)
                        @ nLf,30 say chr(179)
                        id=memotran(alltrim(intju),[ ],[ ])
                        @ nLf,32 say "Interrogatório judicial: fls. "+flsintju
                        @ nLf,69 say chr(179); nLf++
                        k=1
                        do while .t.
                           if alltrim(substr(id,k,32))==""
                              exit
                           else
                              @ nLf,5 say chr(179)
                              @ nLf,30 say chr(179)+" "+substr(id,k,32)
                              @ nLf,69 say chr(179); nLf++
                              k=k+32
                           endif
                        enddo
                     endif
                     @ nLf,5 say chr(192)+replicate(chr(196),63)+chr(217);nLf++
                     skip
			      enddo
			   endif	  
			endif
			use
			sele 1

         nLf++
         @ nLf,3 say Chr(27)+"(s6H"
         @ nLf,3 say "Testemunhas de acusação:"
         @ nLf,3 say Chr(27)+"(s9H"
         nLf++
         nLf++
         nrtest=1
         do while .t.
            if nrtest>14
               exit
            endif
            if !empty(fieldget(fieldpos("testem"+alltrim(str(nrtest)))))
               @ nLf,5 say chr(218)+replicate(chr(196),63)+chr(191);nLf++
               if empty(substr(fieldget(fieldpos("testem"+alltrim(str(nrtest)))),22))
                  @ nLf,5 say chr(179)+alltrim(fieldget(fieldpos("testem"+alltrim(str(nrtest)))))+":"
                  @ nLf,30 say chr(179)
               else
                  @ nLf,5 say chr(179)+substr(fieldget(fieldpos("testem"+alltrim(str(nrtest)))),1,20)
                  @ nLf,30 say chr(179)
                  @ nLf,69 say chr(179); nLf++
                  if empty(substr(fieldget(fieldpos("testem"+alltrim(str(nrtest)))),41))
                     @ nLf,5 say chr(179)+alltrim(substr(fieldget(fieldpos("testem"+alltrim(str(nrtest)))),21))+":"
				  else
                     @ nLf,5 say chr(179)+alltrim(substr(fieldget(fieldpos("testem"+alltrim(str(nrtest)))),21,20))
                     @ nLf,30 say chr(179)
                     @ nLf,69 say chr(179); nLf++
                     @ nLf,5 say chr(179)+alltrim(substr(fieldget(fieldpos("testem"+alltrim(str(nrtest)))),41))+":"
				  endif	 
                  @ nLf,30 say chr(179)
               endif
               flsouvju="ouvju"+alltrim(str(nrtest))
               do case
                  case !empty(fieldget(fieldpos(flsouvju)))
                       @ nLf,32 say "Já foi ouvida em juízo à fl. "+&flsouvju
                       @ nLf,69 say chr(179); nLf++
                  case !empty(fieldget(fieldpos("desist"+alltrim(str(nrtest)))))
                       @ nLf,32 say "Houve desistência à fl. "+fieldget(fieldpos("desist"+alltrim(str(nrtest))))
                       @ nLf,69 say chr(179); nLf++
                  otherwise
                       @ nLf,32 say "Depoimento policial à fl. "+alltrim(fieldget(fieldpos("ouvdel"+alltrim(str(nrtest)))))+":"
                       @ nLf,69 say chr(179); nLf++
                       @ nLf,5 say chr(179)
                       @ nLf,30 say chr(179)
                       @ nLf,69 say chr(179); nLf++
                       id=memotran(alltrim(fieldget(fieldpos("depdel"+alltrim(str(nrtest))))),[ ],[ ])
                       k=1
                       do while .t.
                          if alltrim(substr(id,k,35))==""
                             exit
                          else
                             @ nLf,5 say chr(179)
                             @ nLf,30 say chr(179)+" "+substr(id,k,35)
                             @ nLf,69 say chr(179); nLf++
                             k=k+35
                          endif
                       enddo
               endcase
               @ nLf,5 say chr(179)
               @ nLf,30 say chr(179)
               @ nLf,69 say chr(179)
               nLf++
               @ nLf,5 say chr(192)+replicate(chr(196),63)+chr(217);nLf++
               nrtest++
            else
               exit
            endif
         enddo

         nLf++
         @ nLf,5 say "Número de testemunhas de defesa: "+testdef;nLf++
		 nLf++
		 nLf++
		 nLf++
		 @ nLf,5 say "Relatório feito por "+quemfez
         vezimp++
      enddo
         eject
         set printer to
         set devi to scre
         use
         clear
         inkey(15)
         @ 5,5 say "Impressão finalizada; grampear as duas vias separadamente."
         inkey(10)
return
Inacio de Carvalho Neto
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Comando de impressão de arquivo.

Mensagem por Pablo César »

Eu utilizei um exemplo bem simples no STRU.PRG com Win_Prn da contrib hbwin. Procure no meu código pela FUNCTION Imprime.

Mas eu ainda acho que PrintFileRaw não irá funcionar com a Lexmark dele.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Comando de impressão de arquivo.

Mensagem por cjp »

Desculpe, meu caro, mas não entendi. De qual código vc está falando? Onde acho essa Function imprime?

Se não funcionar com esta Lexmark que eu tenho aqui, mas funcionar com as demais impressoras, já tá bom. No fórum trabalho com uma Lexmark 332n. É nela que eu mais preciso que funcione.
Inacio de Carvalho Neto
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Comando de impressão de arquivo.

Mensagem por Pablo César »

cjp escreveu:Desculpe, meu caro, mas não entendi. De qual código vc está falando? Onde acho essa Function imprime?
Sorry. Eu tinha colocado no STR.PRG mas faltou a letra U, está no STRU.PRG na seção de Downloads você encontra o utilitário com os fontes.
Se não funcionar com esta Lexmark que eu tenho aqui, mas funcionar com as demais impressoras, já tá bom. No fórum trabalho com uma Lexmark 332n. É nela que eu mais preciso que funcione.
Como eu disse antes, imprimir em forma gráfica, irá garantir que funcione em qualquer impressora. Claro que antes de tomar essa decisão, você veja se irá imprimir em impressoras matriciais. Pois nelas a impressão fica muito mais lenta, por ser impressão gráfica. Ai o barulho ninguém aguenta... rs
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Comando de impressão de arquivo.

Mensagem por cjp »

Achei, obrigado.

Fiz uns testes.

Deu um erro nessta linha:

Código: Selecionar todos

c_string:= aLng[051]
O erro foi Variável não existe: aLng.

Daí troquei esta linha para:

Código: Selecionar todos

c_string:= ""
Assim a função roda normalmente, retorna .t., mas não imprime. Nem sequer movimenta a impressora, como antes (na Printfileraw, ela "cuspia" uma folha em branco; agora nem isso).

Estou chamando:

Código: Selecionar todos

   ?imprime("teste","")
Testei também:

Código: Selecionar todos

Win_PrintDlgDC( @xPrn,,, )
   imprime("teste","xPrn")
Mesma coisa: roda normalmente, retorna .t., mas não imprime nada.

Será que estou fazendo algo errado?
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Comando de impressão de arquivo.

Mensagem por Jairo Maia »

Olá Inácio,

Analisando seu código, vi que ele tem vários comandos Esc/Pos, por exemplo:

Código: Selecionar todos

@ nLf,2 say Chr(27)+"(s4H"
@ nLf,2 say Chr(27)+"&d1D"
O que me parece estranho, é que se a impressora aceita comandos Esc/p, é porque ela é compatível com o modo Raw.

Então, vamos fazer uma nova tentativa para imprimir com Win_PrintFileRaw(). Adaptei sua função e coloquei uma função para selecionar a impressora. Se a impressora definada na função Win_PrintFileRaw não for encontrada na lista, ele não imprime, assim, antes de imprimir você selecionará a impressora na lista. Tente fazer o teste com a função em anexo, assim saberemos se ela imprime ou não no modo Raw.
Anexos
IMPRELAT.ZIP
(2.73 KiB) Baixado 288 vezes
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Comando de impressão de arquivo.

Mensagem por cjp »

Desse jeito ela voltou a imprimir uma folha em branco. Aparece a impressora na lista para imprimir sim, mas ela só cospe a folha em branco, não imprime realmente.

Esta impressora (Lexmark Pro 800) é meio complicada pra isso mesmo. Já na época que eu usava o Clipper, não consegui imprimir com ela usando o set printer to. Só consegui imprimir com ela usando aquela função printdados que vc havia me passado no outro tópico.

Mas posso testar isso na impressora que tenho no fórum. É bem provável que funcione. Só que só segunda-feira que vou poder testar.

O que eu acho estranho: se daquele jeito imprime nesta impressora, por que não de outro? E se ela reconhece o comando de imprimir (tanto que cospe a folha em branco), por que não imprime?
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Comando de impressão de arquivo.

Mensagem por cjp »

Meu caro,

Na Lexmark 332n que tenho no fórum, imprimiu sem problema. Essa é sem dúvida uma forma simples de impressão. Obrigado.

Mas ainda estou com um problema muito estranho: em uma das funções que tenho, ela imprime normalmente. Já em outra, que fiz exatamente igual à primeira, não está imprimindo, não consigo entender porquê. A função Win_PrintFileRaw() está retornando -6. Vi neste tópico acima que esse erro se referiria à falta do arquivo, mas o arquivo arqprint.tmp está na pasta. O mesmo arquivo, se coloco pra imprimir na primeira função, imprime corretamente. Por que não nesta segunda? O que será que eu fiz de errado? Está tudo exatamente igual:

Código: Selecionar todos

         cPrinter := PegaPrinter()
         If !Empty( cPrinter )
		    Win_PrintFileRaw( cPrinter, "arqprint.tmp", "Relatorio de Audiencia" )
         Endi
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Comando de impressão de arquivo.

Mensagem por cjp »

Meus caros,

Alguém sabe como fazer para alterar o tamanho da fonte da impressão? Testei alterar esta linha de várias formas, mas sem sucesso:

Código: Selecionar todos

oPrinter:SetFont('Courier New',12,{1,12}, 0,.F.,.F.)
Inacio
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Comando de impressão de arquivo.

Mensagem por Jairo Maia »

Olá Inácio,
cjp escreveu:Mas ainda estou com um problema muito estranho: em uma das funções que tenho, ela imprime normalmente. Já em outra, que fiz exatamente igual à primeira, não está imprimindo
O código que seleciona a impressora e imprime com Win_PrintFileRaw(), deve necessariamente estar abaixo das linhas que fecha o arquivo, ou seja, a linha Set Printer To. Se o arquivo estiver em uso, pode ocorrer a falha de abertura. Você está enviando para a impressora, depois de fechar o arquivo?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Comando de impressão de arquivo.

Mensagem por cjp »

Realmente era esse o problema.

Resolvido, muito obrigado.

Só não consegui resolver ainda a questão do tamanho da fonte. É possível aumentá-la?

Também gostaria de usar negrito, sublinhado e caracteres especiais, se possível.
Inacio de Carvalho Neto
Responder