Gerando um arquivo em PDF sem interface
Outro dia me perguntaram se era possível gerar um arquivo PDF no Protheus, mas sem que abri-se uma tela, procura daqui, procura dali, encontrei a função FWMSPrinter, é o mesmo componente utilizado na geração da Danfe. Para mais detalhes consulte http://tdn.totvs.com/display/public/mp/FWMsPrinter
Abaixo tem um bom exemplo funcional para mostrar o seu funcionamento
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#INCLUDE "RPTDEF.CH" #INCLUDE "FWPrintSetup.ch" #INCLUDE "protheus.ch" User Function fPrintPDF() Local lAdjustToLegacy := .F. Local lDisableSetup := .T. Local oPrinter Local cLocal := "c:\siga\" Local cCodINt25 := "34190184239878442204400130920002152710000053475" Local cCodEAN := "123456789012" Local cFilePrint := "" oPrinter := FWMSPrinter():New('orcamento_000000.PD_', IMP_PDF, lAdjustToLegacy,cLocal, lDisableSetup, , , , , , .F., ) oPrinter:FWMSBAR("INT25" /*cTypeBar*/,1/*nRow*/ ,1/*nCol*/, cCodINt25/*cCode*/,oPrinter/*oPrint*/,.T./*lCheck*/,/*Color*/,.T./*lHorz*/,0.02/*nWidth*/,0.8/*nHeigth*/,.T./*lBanner*/,"Arial"/*cFont*/,NIL/*cMode*/,.F./*lPrint*/,2/*nPFWidth*/,2/*nPFHeigth*/,.F./*lCmtr2Pix*/) oPrinter:FWMSBAR("EAN13" /*cTypeBar*/,5/*nRow*/ ,1/*nCol*/ ,cCodEAN /*cCode*/,oPrinter/*oPrint*/,/*lCheck*/,/*Color*/,/*lHorz*/, /*nWidth*/,/*nHeigth*/,/*lBanner*/,/*cFont*/,/*cMode*/,.F./*lPrint*/,/*nPFWidth*/,/*nPFHeigth*/,/*lCmtr2Pix*/) oPrinter:Box( 130, 10, 500, 700, "-4") oPrinter:Say(210,10,"Teste para Code128C") cFilePrint := cLocal+"orcamento_000000.PD_" File2Printer( cFilePrint, "PDF" ) oPrinter:cPathPDF:= cLocal oPrinter:Preview() Return |
Arquivos include – Gerando um arquivo em PDF sem interface
981 Downloads
6 comentários
Por favor se puder enviar os arquivos “RPTDEF.CH” e “FWPrintSetup.ch” pq sem eles não roda.
luciano.aol@gmail.com
olá Luciano, estarei lhe mandando para seu e-mail
Bom dia,
Estou precisando gerar um arquivo PDF, utilizei o exemplo acima, e funcionou. Não sei o que aconteceu que parou de funcionar. O programa gera o .rel e nao consegue gerar o pdf, mas não gera nenhum erro.
parace que a funcao File2Printer( cFilePrint, “PDF” ) não consegue gerar.
Onde obtenho informações a respeito desta função?
Boa tarde!
Poderia enviar para nosso e-mail (contatos@blogadvpl.com) o seu fonte para compararmos.
Possíveis problemas para não gerar o arquivo PDF:
1. caracteres especiais no nome do arquivo (incluindo acento)
2. caracteres especiais no caminho onde será gravado o PDF
3. caminho não existente
Aguardamos seu retorno
Bom dia ,
Obrigada pelo retorno
Segue o programa de teste copiei e executei, que so gera o arquivo orcamento_000000.rel no diretorio d:temp
Olá!
Neste exemplo é necessário que a propriedade Preview() esteja habilitada, mas para gravar o PDF em alguma pasta definida por você é necessário incluir a propriedade cPathPDF
Exemplo:
oPrinter:cPathPDF:= cLocal
Atualizei o fonte para que você possa visualizar melhor.