FWMSPRINTER - Gerar PDF via Job

Boa Tarde. Estou tendo dificuldades ao tentar gerar um relatório em PDF sem interface via Job. Por mais que eu passe o RootPath como local de geração do arquivo em PDF continua aparecendo a mensagem "Caminho de destino do arquivo .Rel não esta dentro do RootPath do Protheus Server. Processo ignorado. NEW - FWMSPRINTER.PRW(410) ". Alguem consegue me ajudar. Vou passar os trechos de como estou tentando fazer.

chamo a função para impressão/geração do arquivo. lRetImp := StartJob('U_GLB2477', GetEnvServer(), .T.,{ _cNumSol,.T.,_cEmp,_cFil }) isso é chamado em um fonte diferente.

aqui vem a execução da função. User Function GLB2477(aParams) Local lAdjustToLegacy := .F. Local lDisableSetup := .T. Local oPrinter Local cRootPath := "" Local cLocal := "" Local cFilePrint := "" Local FileName := "" Local cBMP := "" Local aDadBcos Local aAllUsers := {} Local nPosUsr := 0 Local _cSolicit := "" Local aRet := {} Local _cNumSol := aParams[1] Local lAuto := aParams[2] Local _cEmp := aParams[3] Local _cFil := aParams[4]

If lAuto == .T. //RpcSetType(3) //RpcSetEnv( cEmp, _cFil,,, "FIN" ) WFPrepEnv( _cEmp, _cFil, , , "FIN") ENDIF IF lAuto == .T. cRootPath := GetSrvProfString ("ROOTPATH","") cLocal := cRootPath+"\solpa\" ELSE cRootPath := GetSrvProfString ("ROOTPATH","") cLocal := cRootPath+"\solpa\" ENDIF IF lAuto == .T. FileName := "PA"+ZBK->ZBK_FILIAL+_cNumSol+".PD" oPrinter := FWMSPrinter():New(FileName, 6, lAdjustToLegacy,cLocal, lDisableSetup, , , , , , .F., ) oPrinter:lInJob := .T. oPrinter:cPathPDF:= cLocal //oPrinter:cPathPrint := cLocal ELSE FileName := "PA"+ZBK->ZBKFILIAL+_cNumSol+".PD" oPrinter := FWMSPrinter():New(FileName, IMP_PDF, lAdjustToLegacy,cLocal, lDisableSetup, , , , , , .F., ) oPrinter:cPathPDF:= cLocal ENDIF

ai quando ele vai executar a função oPrinter := FWMSPrinter():New(FileName, 6, lAdjustToLegacy,cLocal, lDisableSetup, , , , , , .F., ) que ele mostra a mensagem que não esta no RootPath.

Se eu executo via menu entrando no sistema selecionando a empresa e fazendo o processo via menu funciona corretamente. Porem fazendo via Job não consegui descobrir o pq.

Olá Rafael, fiz uma função para testar, no seu caso parece que falta o parâmetro lServer := .T. e o lViewPDF := .F., segue exemplo



/*/{Protheus.doc} ImpPdfServer
    (Impressão PDF via job)
    @type  Static Function
    @author Leandro Lemos
    @since 08/03/2022
    @version P12
    @param param_name, param_type, param_descr
    @return return_var, return_type, return_description
    @example
    (examples)
    @see (links_or_references)
/*/
Static Function ImpPdfServer()
    Local cFilePath       := '\spool\'
    Local cRelNome        := "Impressao Job "+strtran(dtoc(Date()),"/","-")+"_"+strtran(substr(Time(),1,5),':','-')+".pdf"
    Local IMP_PDF          := 6 //PDF
    Local lAdjustToLegacy := .T.    //Ultiliza tamanho no formato legado TMSPrinter
    Local lDisableSetup   := .T.    //Desabilita setup
    Local lViewPDF        := .F.        //Não visualiza o PDF
    Local lServer          := .T.        //Impressão no servidor
    Local lOk          := .T.
    Local oFont1            := TFont():New("Arial",07,08,            ,.F.,,,,,.F.) // Normal

    oPrint := FWMSPrinter():New(cRelNome,IMP_PDF,lAdjustToLegacy,cFilePath,lDisableSetup,,,,lServer,,,lViewPDF)
    //Inicia uma Nova Pagina para Impressao
    oPrint:StartPage()
    oPrint:Say(0030 ,0030,"Teste"                    ,oFont1,100,,,0)

    oPrint:cPathPDF:= cFilePath
    oPrint:Preview()

    cFile := cFilePath+cRelNome
    //Apagando o arquivo
    IF (File(cFile))
        FERASE(cFile)
    EndIF

Return lOk

Era isso mesmo. Consegui gerar automático agora. Obrigado.