



Fala galera do Show Delphi, tudo beleza?
Então pessoal, dias atrás estava recebendo relatos sobre problemas ao exportar para PDF alguns relatórios, em especial em notebooks com o Windows 11.
O problema em questão era que ao tentar exportar o relatório para PDF ocorria um access violation, o arquivo até era gerado, mas parcialmente. A versão do Delphi em questão era o Delphi 10.3 Rio, mas tentei em outras versões e o problema tinha se repetindo.
Depois de muita pesquisa, encontrei materiais referenciando o problema a fontes que não estariam na máquina. Também encontrei códigos para contornar o problema.
Para quem tem os fontes do Fast Report, encontrei na internet uma sugestão interessante, vamos a ela.
Você precisará adicionar ao final da função o seguinte código:
if Result = nil then Result := ttf
Veja o exemplo abaixo:
1 2 3 4 5 6 7 8 | function TrueTypeCollection.LoadFont( font: Tfont) : TrueTypeFont; var ...... begin ...... if Result = nil then Result := ttf //<-- aqui end; |
Após ajustar o código você precisa recompilar os pacotes do Fast Report, e você pode fazer isso fechando o Delphi e usando o recompiler.exe da própria pasta do Fast Report. Depois digo, ai sim você pode compilar seu projeto e testar.
Mas e se eu não tiver os fontes, o que fazer?
Como o problema parece estar relacionado a fontes, uma coisa que percebi é que o a propriedade EmbeddedFonts do frxPDFExport estava marcada como True, ou seja o componente tenta embarcar a fonte ao exportar.
Então, vamos mudar para False:
1 2 | frxPDFExport.EmbeddedFonts := False; frxPDFExport.Background := False; |
A princípio também resolveu o problema no meu caso.
Então pessoal, tentem estas alternativas e comentem aqui se funcionou para vocês.
Bons códigos e até o próximo post.
Referencia:
https://forum.fast-report.com/en/discussion/12590/access-violation-when-export-to-pdf
https://www.projetoacbr.com.br/forum/topic/50719-access-violation-ao-gerar-pdf-de-carta-de-corre%C3%A7%C3%A3o-fast-report/