Boa tarde!
Alguém sabe o motivo de acontecer as vezes um relatório em FWMSPrinter não gerar o arquivo .PDF e gerar apenas um arquivo .REL ?
Obrigado.
Boa tarde!
Alguém sabe o motivo de acontecer as vezes um relatório em FWMSPrinter não gerar o arquivo .PDF e gerar apenas um arquivo .REL ?
Obrigado.
SUGESTÃO 01
Atendendo um cliente percebi um cenário igual o seu, quando o .PDF era pequeno, ele era gerado com sucesso, porém se era grande demais, era gerado erro no processamento.
Percebemos que durante o processo de debug, a geração ocorria com sucesso, então decidimos inserir um Sleep() dentro do fonte, pois aparentemente a classe FwMsPrinter() envia o comando de geração para o Windows e não espera a sua finalização.
Após esta tratativa, o erro parou de ser reproduzido.
SUGESTÃO 02
Tem alguns motivos para isso:
1. Pasta de arquivos temporários no Protheus muito grande (tem o prefixo SC**);
2. Impressão em ambiente Linux sem a presença do executável pdfprinter (específico para Linux ou execução sem interface gráfica);
3. Arquivo gerado com mesmo nome de um arquivo já existente e sem permissão de sobrescrição;
4. Falta de permissão por parte do Protheus para escrever na pasta;
5. Erro na customização de realização de impressão.
Abaixo vou citar a solução que encontrei para os pontos acima:
1. Deletar os arquivos temporários manualmente ou por meio de alguma tarefa automática;
2. Baixar o executável descrito nesta documentação: Agente TOTVS Printer para Linux sem GUI
3. Utilizar a função File() para verificar se o nome que será gerado já existe no ambiente;
4. Verificar as permissões de acesso à pasta com base nos grupos de utilização (varia de Windows para Linux)
5. Utilizar um exemplo simples do TDN e verificar se o erro ocorre, caso não, adaptar a customização para os moldes desse exemplo.
Estava com o mesmo problema, colocando um sleep após o preview deu certo também, obrigado.
— Alexandre Behling 07 de Feb de 2023Boa tarde!
Verifique se existe o programa printer.exe na pasta do smartclient onde o relatório está sendo executado.
https://suporte.totvs.com/portal/p/10098/download#detail/693163
Atualizei o arquivo porém o erro persiste.
Obrigado pela sugestão.
— BrunoVSilva 27 de Dec de 2018é necessário ter o arquivo printer.exe na pasta do smartclient e appserver
— Efdéias Oliveira 21 de Oct de 2022No meu caso percebi que o protheus se perde quando no caminho de destino não tiver uma barra no final.
Exemplo:
-> Errado ::cCaminho := "c:\temp" ::oPrint:cPathPDF := ::cCaminho
-Correto ::cCaminho := "c:\temp\" ::oPrint:cPathPDF := ::cCaminho
Colocando esse barra ele cria o arquivo .rel e logo após converte para .PDF sem problemas.
A solução é extremamente simples:
Verifique se o recurso "printer.exe"
existe na pasta do SmartClient e do Application Server do Protheus.
Este recurso é responsável por converter o relatório do formato ".REL" para ".PDF".
Quando o Protheus não conseguir converter o arquivo o seguinte erro será apresentado no console do server:
TOTVS Printer: Printer Agent not found on Server path. Check if "Caminho-do-AppServer\printer.exe" file exists.
Por isso é recomendável fazer um tratamento dentro da rotina e verificar se o arquivo PDF foi gerado, e caso contrário emitir um alerta ao usuário.
O meu problema era este, atualizei o app server e estava sem o printer.exe
— Alexandre Behling 02 de Mar de 2021Olá galera!
Implementei o seguinte tratamento e resolveu:
////////////////////////////////////
// Finaliza o relatório
////////////////////////////////////
oPrinter:EndPage()
oPrinter:Preview() // Abre a tela para visualização do relatório (se lViewPDF == .T.)
/// tratamento para ver se o PDF foi gerado corretamente
cArqPDF := cServerPath + "\" + cFilePDF
For nX := 1 to 10
If ! File(cArqPDF)
Sleep(1000)
EndIf
Next nX
For nX := 1 to 10
aFilePDF := Directory(cArqPDF) // Retorna um array com { cNomeArq, cTamanho, dData, cHora, cAtributos }
// Verifica se tamanho do PDF gerado está maior que zero
If aFilePDF[1,2] > 0
// Se maior que zero, OK! Então sai do loop
Exit
Else
Sleep(1000)
EndIf
Next nX
Ola galera estão fazendo isso para salvar esse relatorio em uma pasta do servidor via sched? Eu estou com esse problema, estou fazendo a impressão da danfe em uma pasta no ProtheusData, ele cria o .REL mas não gera o PDF.
Boa noite,
Verifica se o arquivo printer.exe do appserver que é disparado esse job é o mais atualizado, como é um Schedule ele monta o PDF baseado no printer.exe do appserver.
— BrunoVSilva 07 de May de 2020Conseguiu fazer funcionar?
— Alencar Buriti Jr 25 de Aug de 2020Tive o mesmo problema, geralmente se resolve colocando um "\" no final do caminho ex: Local cDir := "C:\Temp\"
Boa tarde, também aconteceu conmigo. Mas eu fiz uma alteração no Usuario. No Configurador -> Usuário -> Senha -> Usuários, você têm que pesquisar o Usuário e Alterar o mesmo, na ficha "Parametrização" . Vou deixar uma imagem.
Estava com o mesmo problema e consegui resolver apagando os arquivos com extensão file (arquivo) que ficam dentro da pasta system.
Estava com o mesmo problema apenas para job/schedule em ambiente linux (TOTVS Cloud).
Solução: Colocar o caminho (diretório e nome de arquivo) completo em minúscula.