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

#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
[sdm_download id="2273" fancy="1" new_window="1" button_text="Copiar agora!"]