Jump to content

dev botao

Danfe NF-e e NFC-e FPDF Linux


Go to solution Solved by Daniel Simoes,

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

Edited by arpa_sistemas
Corpo da mensagem ficou com dados errados
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • Membros Pro

Eu compilo no Delphi 12 e rodo no Linux, pois o meu Linux não tem interface gráfica.

Tentei ativar via código também, porém da mesma forma não obtive sucesso.

Continuo testando aqui, caso tenha algum parecer informo. 

Link to comment
Share on other 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 to comment
Share on other 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')

  • Like 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 to comment
Share on other 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;

 

  • Like 4
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 to comment
Share on other 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.

  • Like 2
Link to comment
Share on other 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 to comment
Share on other sites

  • Fundadores

Ainda não consegui compreender, em que momento, o Delphi Linux, converte o conteúdo para UTF8...

De forma paliativa, você poderia:

- Remover todos os acentos do PDF
- Rodar o comando abaixo, para converter o arquivo de UTF8 para ANSI CP1252

iconv -f UTF-8 -t CP1252 -o ArquivoEmCP1252.pdf ArquivoEmUTF8.pdf

 

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 to comment
Share on other sites

  • Fundadores
  • Solution

@arpa_sistemas, creio que consegui... enviei uma possível correção ao SVN

Commit [r35417]

e também ao GIT do FPDF-Pascal
https://github.com/Projeto-ACBr-Oficial/FPDF-Pascal

  • Like 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 to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.