Win_PrintFileRaw

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:

Win_PrintFileRaw

Mensagem por cjp »

Pessoal, alguém poderia me ajudar numa função em que tento imprimir em um pdf.

Não sei o que acontece, mas ora não nem está criando o arquivo, ora está criando o arquivo com tamanho zero.

Alguém saberia me dizer por que?

Verifiquei que a Win_PrintFileRaw está retornando 1.

Segue abaixo o que importa da função:

Código: Selecionar todos

function imprelat
         local nLf :=1
         private cPrinter
         private aPNomes := {}
         cls
         @ 15,5 say "Imprimindo; aguarde..."
         erase arqprint.tmp
         set printer to "arqprint.tmp"
         set devi to print

         dbsel("SELECT * FROM audiencias WHERE processo='"+proc+"'", "imprelat",nProvAudiencias)


         nVer:= 22
         nHor:= 16
         nTam:= 7

            @ 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(data)+" às "+alltrim(hora)+"h"
            nLf++
            nLf++
            nLf++
            @ nLf,2 say Chr(27)+"(s9H"
            @ nLf,2 say Chr(27)+"&d@"
            nLf++
            nLf++
            @ nLf,5 say "Observaçoes: "+substr(observacoes,1,48)
            a=49

....

         cls
                 private aPrn := Win_PrinterList( .t., .f. )
                 escimpr()
         If !Empty( cPrinter )
            ?Win_PrintFileRaw( cPrinter, "ArqPrint.Tmp", "Rel.pdf" )
         Endif
         set devi to scre
         set printer to
return
Inacio de Carvalho Neto
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Win_PrintFileRaw

Mensagem por Itamar M. Lins Jr. »

Olá!
PDF não é arquivo raw. (texto puro).
Precisa abrir ele com PDFreader ou usar um programa externo para imprimir.
Aqui no forum tem exemplos com sumatrapdf

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Win_PrintFileRaw

Mensagem por cjp »

Pelo que vi, o Sumatra seria para imprimir o pdf.
Não é isso que estou buscando aqui.
Preciso criar o pdf a partir de dados do sistema.
Já uso esta mesma função para imprimir diretamente na impressora. Pensei que, se apenas mudasse a impressora para o Foxit, por exemplo, ele criaria automaticamente o pdf. Mas não está funcionando.
Inacio de Carvalho Neto
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Win_PrintFileRaw

Mensagem por Itamar M. Lins Jr. »

Olá!
tento imprimir em um pdf.
O que é, tentar imprimir em um PDF ? Seria tentar imprimir em uma impressora virtual, que transforma em PDF ?
Preciso criar o pdf a partir de dados do sistema.

Código: Selecionar todos

            ?Win_PrintFileRaw( cPrinter, "ArqPrint.Tmp", "Rel.pdf" )
1) O arquivo não é PDF. @ nLf,2 say Chr(27)+"(s4H"
2) Fechar o arquivo antes. Aqui, vc abre:

Código: Selecionar todos

         set printer to "arqprint.tmp"
Cadê o fechamento do arquivo ?

Se vai converter um texto para PDF não precisa usar "ESCAPE SEQUENCE" use os comandos de alguma LIB para PDF.
Estude a classe do José Quintas. PDFCLASS: https://github.com/JoseQuintas/pdfclass

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Win_PrintFileRaw

Mensagem por cjp »

O que é, tentar imprimir em um PDF ? Seria tentar imprimir em uma impressora virtual, que transforma em PDF ?
Isso mesmo. Achei que essa linguagem fossem comum.

1) O arquivo não é PDF. @ nLf,2 say Chr(27)+"(s4H"
Não entendi o que vc quis dizer aqui.


2) Fechar o arquivo antes. Aqui, vc abre:
Cadê o fechamento do arquivo ?
Tem um set printer to no final. Teria que fechar antes?

Se vai converter um texto para PDF não precisa usar "ESCAPE SEQUENCE" use os comandos de alguma LIB para PDF.
Estude a classe do José Quintas. PDFCLASS: https://github.com/JoseQuintas/pdfclass
O que seria Escape Sequence? Vou verificar a classe do Quintas.
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:

Win_PrintFileRaw

Mensagem por cjp »

Testei agora colocando o set printer to antes, mas também não funcionou.
Inacio de Carvalho Neto
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Win_PrintFileRaw

Mensagem por alxsts »

Olá!
cjp escreveu:O que seria Escape Sequence?
É uma sequencia de caracteres iniciada por ESC, usada por algumas impressoras para ativar algum modo especial de impressão. Você está usando isto, conforme postou acima:

Código: Selecionar todos

@ nLf,2 say Chr(27)+"(s4H"
@ nLf,2 say Chr(27)+"&d1D"
cjp escreveu:1) O arquivo não é PDF. @ nLf,2 say Chr(27)+"(s4H" Não entendi o que vc quis dizer aqui.
Se o arquivo tem uma Escape Sequence não é um PDF pois um arquivo PDF não usa Escape Sequences.
cjp escreveu:Vou verificar a classe do Quintas.
Tem um exemplo no tópico Formulário em PDF com logotipo, criado pelo colega Jairo Maia.
[]´s
Alexandre Santos (AlxSts)
paiva_dbdc
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 12 Nov 2012 09:58
Localização: uberlandia mg

Win_PrintFileRaw

Mensagem por paiva_dbdc »

outra opcao

gere oi relatorio em uma arquivo e use o dosprint.exe para gerar pdf

uso a muitos anos

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

Win_PrintFileRaw

Mensagem por cjp »

Com escusas pela demora na resposta, informo que o exemplo serviu perfeitamente. Era o que eu precisava. Obrigado.
Inacio de Carvalho Neto
Responder