Ir para conteúdo
  • Cadastre-se

Recommended Posts

Postado

Boa tarde a todos.

Estou com um problema no loadfromFile do acbrNFe para a impressão de um DANFE.

O nome do emitente tem acento, quando eu faço o loadfromFile do arquivo XML e passa no   XMLStr := ConverteXMLtoNativeString(XMLStr); ele remove o acento e coloca um caractere especial.

O XML não tem a tag de utf-8, mas quando entra no "function UTF8ToNativeString(const AUTF8String: AnsiString): String;" para maior que delphi 12, e faz o "UTF8ToString(AUTF8String);", ele "quebra" o XML. 

Como algumas DANFEs minhas precisam ser apresentadas para orgao publico, alguns estão incomodados com isso.

 

Na DANFE está marcado para remover acentos, mas o problema é quando faz esse conversão.

Alguem pode me auxiliar ?

Postado
14 horas atrás, Daniel Simoes disse:

O ACBr presume, que todos os XMLs de DFe's são UTF8

então, mas não sendo e convertendo gera esse problema de caracteres especiais. Tem algo que posso fazer ?

Postado

Pelo que parece o problema está na codificação do XML. O ACBr espera UTF-8, então se o arquivo vem sem essa definição pode acabar quebrando os caracteres. Eu verificaria primeiro como esse XML está sendo gerado, porque corrigir na origem costuma ser melhor do que tratar depois no carregamento.

  • Curtir 1
Postado
27 minutos atrás, butcher4556 disse:

Pelo que parece o problema está na codificação do XML. O ACBr espera UTF-8, então se o arquivo vem sem essa definição pode acabar quebrando os caracteres. Eu verificaria primeiro como esse XML está sendo gerado, porque corrigir na origem costuma ser melhor do que tratar depois no carregamento.

concordo com você ! O problema é que é um xml de fornecedor, dai fica complicado

Postado

Estou colocando os "problemas" que localizei.

Mudei para o loadfromfile novamente e estou colocando as imagens de onde está "certo" e onde "quebra" para ver se alguem pode me auxiliar.

As imagens são debbugando a TNotasFiscais.LoadFromFile. 

No memorystrema como utf está correto e no ansi quebra. Deixei destacado a quebra do caractere especial em questão.

Novamente, obrigado pela atenção de todos.

img1.png

imag2.png

img3.png

  • Fundadores
Postado

Parece tudo correto, com o XML.. está em UTF8 e tem a Declaração de Encoding, no inicio do arquivo

image.png

 

Como reproduzir o Problema, no Demo do ACBr ?

Basta carregar o arquivo, e imprimir a DANFE ?

Você está usando Fast, Fortes ou FPDPF ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado
6 minutos atrás, Daniel Simoes disse:

Parece tudo correto, com o XML.. está em UTF8 e tem a Declaração de Encoding, no inicio do arquivo

image.png

 

Como reproduzir o Problema, no Demo do ACBr ?

Basta carregar o arquivo, e imprimir a DANFE ?

Você está usando Fast, Fortes ou FPDPF ?

Sim, eu fiz o seguinte:

criei um novo projeto, adicionei acbrnfe e acbrdanfefr (uso fastreport), so apontei para o DANFeRetrato.fr3 que fica dentro a pasta report do exemplo do AcbrNFe. Coloquei 1 button e fiz acbrnfe1.notafiscais.loadfromfile(<path do XML>) e a danfe sai com o caractere errado.

Estou utilizando delphi 13.1 + fastrerport 2026.2.1.

E sim, esta com a tag utf, verifiquei isso pelo notaped ++. Mas quando passas nas rotinas que deixei na mensagem anterior, ele quebra.

  • Fundadores
Postado

O problema pode estar na Classe do Fast Report do ACBr, ou ainda no arquivo .fr3

Você está usando o .FR3 disponibilizado pelo ACBr ?

Infelizmente não consigo testar, usando o Fast Report

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Fundadores
Postado

No Demo do ACBr, em Fortes, não ocorre o problema

image.png

 

procedure TfrmACBrNFe.btnImprimirClick(Sender: TObject);
begin
  OpenDialog1.Title := 'Selecione a NFe';
  OpenDialog1.DefaultExt := '*-nfe.XML';
  OpenDialog1.Filter := 'Arquivos NFe (*-nfe.XML)|*-nfe.XML|Arquivos XML (*.XML)|*.XML|Todos os Arquivos (*.*)|*.*';

  OpenDialog1.InitialDir := ACBrNFe1.Configuracoes.Arquivos.PathSalvar;

  if OpenDialog1.Execute then
  begin
    ACBrNFe1.NotasFiscais.Clear;
    ACBrNFe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);
    ACBrNFe1.NotasFiscais.Imprimir;
  end;
end;  

 

image.png

 

Também não ocorreu, usando o FPDF

35260443987515000725550010000549591147977207-nfe.pdf

Ahh.. fiz o testes em Lazarus/FPC...

 

Qual a sua IDE e Sistema Operacional ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado
2 horas atrás, Daniel Simoes disse:

No Demo do ACBr, em Fortes, não ocorre o problema

image.png

 

procedure TfrmACBrNFe.btnImprimirClick(Sender: TObject);
begin
  OpenDialog1.Title := 'Selecione a NFe';
  OpenDialog1.DefaultExt := '*-nfe.XML';
  OpenDialog1.Filter := 'Arquivos NFe (*-nfe.XML)|*-nfe.XML|Arquivos XML (*.XML)|*.XML|Todos os Arquivos (*.*)|*.*';

  OpenDialog1.InitialDir := ACBrNFe1.Configuracoes.Arquivos.PathSalvar;

  if OpenDialog1.Execute then
  begin
    ACBrNFe1.NotasFiscais.Clear;
    ACBrNFe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);
    ACBrNFe1.NotasFiscais.Imprimir;
  end;
end;  

 

image.png

 

Também não ocorreu, usando o FPDF

35260443987515000725550010000549591147977207-nfe.pdf 7.93 kB · 1 download

Ahh.. fiz o testes em Lazarus/FPC...

 

Qual a sua IDE e Sistema Operacional ?

Estou com windows 11, Delphi 13.1 e fastReport 2026.2.1

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...