Ir para conteúdo
  • Cadastre-se

dev botao

Danfe NF-e e NFC-e FPDF Linux


Recommended Posts

  • Membros Pro

Bom dia.

Estou desenvolvendo uma aplicação que irá rodar em windows/linux, responsável por realizar a emissão de documentos fiscais. Porém ao gerar o DANFe da NF-e/NFC-e utilizando o FPDF no linux(sem ambiente visual), está gerando problemas de codificação.

Fiz inumeros testes antes de solicitar auxílio aqui no fórum, porém sem sucesso. Meu ambiente linux é um Debian 12 (Bookworm) sem GUI, com o pacote ttf-mscorefonts instalado e a configuração de locale em UTF-8 conforme imagem enviada.

Exemplo de requisição do app demo em anexo.

 

DemoACBr.zip

 

Danfe.png

Linux.png

ExemploRequisição.png

Editado por arpa_sistemas
Corpo da mensagem ficou com dados errados
Link para o comentário
Compartilhar em outros sites

  • Consultores

Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

14 minutos atrás, arpa_sistemas disse:

Bom dia.

Estou desenvolvendo uma aplicação que irá rodar em windows/linux, responsável por realizar a emissão de documentos fiscais. Porém ao gerar o DANFe da NF-e/NFC-e utilizando o FPDF no linux(sem ambiente visual), está gerando problemas de codificação.

Fiz inumeros testes antes de solicitar auxílio aqui no fórum, porém sem sucesso. Meu ambiente linux é um Debian 12 (Bookworm) sem GUI, com o pacote ttf-mscorefonts instalado e a configuração de locale em UTF-8 conforme imagem enviada.

Exemplo de requisição do app demo em anexo.

 

DemoACBr.zip 13.04 kB · 0 downloads

 

Danfe.png

Linux.png

ExemploRequisição.png

Um momento

Link para o comentário
Compartilhar em outros sites

  • Consultores
29 minutos atrás, arpa_sistemas disse:

Bom dia.

Estou desenvolvendo uma aplicação que irá rodar em windows/linux, responsável por realizar a emissão de documentos fiscais. Porém ao gerar o DANFe da NF-e/NFC-e utilizando o FPDF no linux(sem ambiente visual), está gerando problemas de codificação.

Fiz inumeros testes antes de solicitar auxílio aqui no fórum, porém sem sucesso. Meu ambiente linux é um Debian 12 (Bookworm) sem GUI, com o pacote ttf-mscorefonts instalado e a configuração de locale em UTF-8 conforme imagem enviada.

Exemplo de requisição do app demo em anexo.

 

DemoACBr.zip 13.04 kB · 1 download

 

Danfe.png

Linux.png

ExemploRequisição.png

Use o comando file no arquivo gerado para saber o tipo de codificação do arquivo:
 

file <nome do arquivo>

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Qual compilador é IDE você está usando no Linux ?

Observe no código do DANFCe que ele liga os IsITF8 se for FPC... creio que seja necessário o mesmo quando for Linux

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.

Link para o comentário
Compartilhar em outros sites

  • Fundadores
46 minutos atrás, arpa_sistemas disse:

Já tentei isso também, testei tanto no Debian 12 quando no Ubuntu 22.04.

Por favor teste com a Unit em anexo... Mudei a linha abaixo:

  SetUTF8({$IfDef USE_UTF8}true{$else}false{$EndIf});   

ACBrNFCeDANFeFPDF.pas

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.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Os fontes estão em ANSI, cp1252...

Mas estou desconfiado que o compilador Linix do Delphi converte ele para UTF8..

Por favor experimente cercar uma String acentuada com o ACBrStr()

Exemplo;

ACBrStr('Homologação')

  • Curtir 1
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.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Consegui reproduzir o problema e estou investigando...

Aparentemente ele só ocorre em Delphi compilando em Linux (talvez tb em Android)

  • Curtir 2
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.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Notei que o comando final, que salva o Buffer em Disco, quando em Linux, sempre salva o arquivo como UTF8... e não ANSI (e por enquanto, o FPDF-Pascal, só suporta ANSI)

Vou tentar algum ajuste nessa rotina

procedure TFPDF.SaveToFile(const vFile: String);
begin
  //Save file locally
  Close;
  try
    Self.buffer.SaveToFile(vFile);
  except
    on E: Exception do
      Error('Unable to create output file: ' + vFile, E);
  end;
end;

 

  • Curtir 3
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.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia, @Daniel Simoes estava efetuando alguns testes e percebi o seguinte.

Primeiramente desliguei a flag Compress para obter o texto em plain text, após isso, fiz gravar o conteúdo do pdf em Stream sem passar pelo disco, e comecei a validação da codificação do mesmo.

Usando a função TEncoding.GetBufferEncoding retorna que o texto é ANSI, e usando a função IsUTF8String  da unit System.WideStrUtils retorna que o texto é UTF8.

Retornando o texto gerado pelo FPDF para o Windows ocorre o problema dos caracteres, agora, se utilizado a função UTF8ToAnsi e retornar o texto gerado o problema dos caracteres é resolvido.

Acredito que algo no FPDF continua gerando o caracteres em UTF8 mesmo após a tua sugestão de alteração.

Não sei se te ajuda em algo, mas continuo tentando achar uma solução aqui também.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Oi @arpa_sistemas, sim.. eu notei que parece haver algo errado até mesmo na Unit ACBrUtil.Strings, quando em POSIX (Linux)...

Ainda estou investigando o problema... (mas infelizmente estou com pouco tempo para "sentar" na frente do PC)

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.

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.