Página 1 de 1

Win_PrintFileRaw

Enviado: 12 Mai 2021 15:37
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

Win_PrintFileRaw

Enviado: 12 Mai 2021 16:08
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.

Win_PrintFileRaw

Enviado: 12 Mai 2021 19:24
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.

Win_PrintFileRaw

Enviado: 12 Mai 2021 20:08
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.

Win_PrintFileRaw

Enviado: 12 Mai 2021 23:25
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.

Win_PrintFileRaw

Enviado: 12 Mai 2021 23:32
por cjp
Testei agora colocando o set printer to antes, mas também não funcionou.

Win_PrintFileRaw

Enviado: 13 Mai 2021 02:11
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.

Win_PrintFileRaw

Enviado: 13 Mai 2021 11:11
por paiva_dbdc
outra opcao

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

uso a muitos anos

Paiva

Win_PrintFileRaw

Enviado: 02 Jul 2021 01:02
por cjp
Com escusas pela demora na resposta, informo que o exemplo serviu perfeitamente. Era o que eu precisava. Obrigado.