Jump to content

PDF sendo gravado na Pasta C: \Windows\SysWOW64 (Resolvido / Solved)


Fábio Matte

Recommended Posts

Boa tarde, eu estou desenvolvendo uma aplicação com hospedagem no IIS, e neste como todos, gero relatorios em PDF usando o FastReports.

 

Uso esse código para gerar o PDF.     

NomeRPT.PrepareReport(True);
ArqPDF := NomeRelPDF+'_'+FormatDateTime('ddmmyyyy_hhmmss.zzz',Now)+'.pdf';
PDFExport.FileName := ArqPDF;
PDFExport.DefaultPath := UniServerModule.LocalCachePath;
PDFExport.ShowDialog := false;
PDFExport.ShowProgress := False;
NomeRPT.Export(Self.PDFExport);
NomeRPT.PreviewPages.SaveToFile(ArqPDF);
frmRelatorios_Movimento.UniPDFFrame1.PdfURL := UniServerModule.LocalCacheURL + ArqPDF; // Displayed on UniURLFrame
frmRelatorios_Movimento.ShowModal;

 

Ele está gerando normalmente o arquivo na Cache do Servidor (pasta criada pelo Unigui na raíz da aplicação), porém, ele cria o mesmo arquivo dentro da C:\Windows\SysWOW64, só que isso vai enchendo a pasta de sistemas com arquivos PDF e eu não consigo encontrar onde é o problema que o mesmo salva uma copia do arquivo na pasta de sistema.

 

Alguém já viu algo parecido com isso?

Link to comment
Share on other sites

Tenho experiência com dll ISAPI de servidores REST mas não com unigui, porém, creio que se comportam do mesmo jeito.

 

Se você usar Paramstr(0) em qualquer projeto ISAPI, ele vai lhe retornar , no caso do IIS, a pasta do executável w3p.exe que, no seu caso, é C:\Windows\SysWOW64. Tente substituir

 

isso :  PDFExport.DefaultPath := UniServerModule.LocalCachePath;

por isso : PDFExport.DefaultPath := StringReplace(ExtractFilePath(GetModuleName(HInstance)),'\\?\','',[rfReplaceAll,rfIgnoreCase]) + '\temp\'. //Por exemplo

Link to comment
Share on other sites

Obrigado Andriws Luna, sua dica me ajudou, pois realmente ele tava retorna ao lugar do w3p.exe, e o que eu fiz foi, mudar a forma com que ele interpretava o lugar onde o arquivo era salvo.

isso :  PDFExport.DefaultPath := UniServerModule.LocalCachePath;

por isso PDFExport.FileName      := UniServerModule.NewCacheFileUrl(False, ".pdf", '', '', AUrl, True);

 

Obrigado, 

Resolvido

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...