Seguindo a orientação recebida no Discord, estou criando este tópico para relatar um problema de layout que diagnosticamos, detalhar a solução de contorno encontrada e, principalmente, propor uma sugestão de melhoria para o componente ACBrNFeDANFEFR.
1. Descrição do Problema
Enfrentamos um problema onde o texto no "Quadro de Identificação do Emitente" do DANFE era cortado na última linha (em anexo). O mais intrigante é que o problema ocorria apenas em máquinas de um cliente específico (tanto em Windows 7 quanto em Windows 10), mas não em nosso ambiente de desenvolvimento, mesmo utilizando o mesmo executável, mesmo template .fr3 e os mesmos dados exatos do emitente.
2. Diagnóstico e Causa Raiz
Após um diagnóstico exaustivo e metódico, descartamos as seguintes causas comuns:
DPI Scaling: Todas as máquinas envolvidas estavam configuradas em 100%.
Drivers de Impressora: O problema persistia mesmo utilizando o "Microsoft XPS Document Writer" como impressora padrão.
Inconsistência de Arquivos: o template .fr3 era idêntico em todos os ambientes.
3. Solução de Contorno Aplicada
Para resolver o problema de forma imediata para o cliente, editamos diretamente o template NotaFiscalEletronica.fr3 no FastReport Designer. A solução foi alterar a propriedade LineSpacing do objeto TfrxMemoView do emitente, reduzindo seu valor de 2 para 1. Isso fez com que o texto coubesse perfeitamente no campo, resolvendo 100% o problema visual.
Estou anexando a este tópico o arquivo .fr3 com esta modificação para análise.
4. Sugestão de Implementação de Nova Feature
Embora a edição do template resolva o problema, ela cria a necessidade de manter um arquivo .fr3 customizado, o que pode complicar a manutenção e a distribuição do software a longo prazo, especialmente quando se lida com múltiplos clientes que podem ter necessidades pontuais.
Minha sugestão é a implementação de uma nova funcionalidade no componente ACBrNFeDANFEFR que permita o acesso e a manipulação de propriedades de objetos do relatório FastReport em tempo de execução, diretamente via código Delphi.
Algo do tipo: ACBrNFeDANFEFR 1.MemoEmitente.LineSpacing := 1;
5. Conforme pedido pelo @Victor H. Gonzales - Panda, algumas variáveis para reprodução:
Razão Social (ACBrNFe1.NFe.Emit.xNome): 44 caracteres
Linha do Endereço (...enderEmit.xLgr, nro): 30 caracteres
E-mail (...enderEmit.email): 20 caracteres
Informação Adicional (utilizando a propriedade ACBrNFe1.DANFE.Site): 44 caracteres
NotaFiscalEletronica.rar