Membros Pro arpa_sistemas Posted September 24 Membros Pro Share Posted September 24 (edited) 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 Edited September 24 by arpa_sistemas Corpo da mensagem ficou com dados errados Link to comment Share on other sites More sharing options...
Consultores Júlio Cavalcanti Posted September 24 Consultores Share Posted September 24 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 Um momento Link to comment Share on other sites More sharing options...
Consultores Júlio Cavalcanti Posted September 24 Consultores Share Posted September 24 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 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 More sharing options...
Membros Pro arpa_sistemas Posted September 24 Author Membros Pro Share Posted September 24 Eu já havia feito isso para tentar identificar. Segue imagem. Link to comment Share on other sites More sharing options...
Consultores Júlio Cavalcanti Posted September 24 Consultores Share Posted September 24 Pode ser a maneira que o encoding está sendo tratado no processo de geração do pdf. O locale está correto. Consegue fazer um teste com outro arquivo? Link to comment Share on other sites More sharing options...
Consultores Júlio Cavalcanti Posted September 24 Consultores Share Posted September 24 Os fontes estão atualizados? Link to comment Share on other sites More sharing options...
Membros Pro arpa_sistemas Posted September 24 Author Membros Pro Share Posted September 24 (edited) Sim, estão atualizados. Segue: Edited September 24 by arpa_sistemas Link to comment Share on other sites More sharing options...
Consultores Júlio Cavalcanti Posted September 24 Consultores Share Posted September 24 Como está a configuração de região e idioma? Link to comment Share on other sites More sharing options...
Membros Pro arpa_sistemas Posted September 24 Author Membros Pro Share Posted September 24 Estou subindo um ubuntu também para efetuar outros testes. 2 minutos atrás, Júlio Cavalcanti disse: Como está a configuração de região e idioma? Seria a imagem que te passei no início? Link to comment Share on other sites More sharing options...
Consultores Júlio Cavalcanti Posted September 24 Consultores Share Posted September 24 4 minutos atrás, arpa_sistemas disse: Estou subindo um ubuntu também para efetuar outros testes. Seria a imagem que te passei no início? Isso mesmo, aparentemente está correto Link to comment Share on other sites More sharing options...
Membros Pro arpa_sistemas Posted September 24 Author Membros Pro Share Posted September 24 Ocorreu a mesma coisa no ubuntu, com as mesmas configurações Link to comment Share on other sites More sharing options...
Fundadores Daniel Simoes Posted September 24 Fundadores Share Posted September 24 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 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Membros Pro arpa_sistemas Posted September 24 Author Membros Pro Share Posted September 24 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 More sharing options...
Consultores Daniel InfoCotidiano Posted September 24 Consultores Share Posted September 24 Tente reconfigurar: sudo dpkg-reconfigure locales Daniel de Morais (Infocotidiano) Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord Link to comment Share on other sites More sharing options...
Membros Pro arpa_sistemas Posted September 24 Author Membros Pro Share Posted September 24 (edited) Já tentei isso também, testei tanto no Debian 12 quando no Ubuntu 22.04. Já testei usando instalação normal do Linux, usando o WSL do windows e usando docker. Edited September 24 by arpa_sistemas Link to comment Share on other sites More sharing options...
Fundadores Daniel Simoes Posted September 24 Fundadores Share Posted September 24 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 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Membros Pro arpa_sistemas Posted September 24 Author Membros Pro Share Posted September 24 (edited) Ocorre a mesma coisa. Estou testando as conversões de UTF-8 para Ansi no método ConvertTextToAnsi, para ver se surte algum efeito. Edited September 24 by arpa_sistemas Link to comment Share on other sites More sharing options...
Fundadores Daniel Simoes Posted September 24 Fundadores Share Posted September 24 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') 1 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Fundadores Daniel Simoes Posted September 24 Fundadores Share Posted September 24 Consegui reproduzir o problema e estou investigando... Aparentemente ele só ocorre em Delphi compilando em Linux (talvez tb em Android) 2 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Membros Pro arpa_sistemas Posted September 24 Author Membros Pro Share Posted September 24 Boa noite Daniel, efetuei os testes que solicitou e continua ocorrendo o problema. Também tentei alterar o CodePage na compilação do Delphi nesse local, para ver se resolvi o problema. 1 Link to comment Share on other sites More sharing options...
Fundadores Daniel Simoes Posted September 24 Fundadores Share Posted September 24 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; 4 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Membros Pro arpa_sistemas Posted September 26 Author Membros Pro Share Posted September 26 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. 2 Link to comment Share on other sites More sharing options...
Fundadores Daniel Simoes Posted September 26 Fundadores Share Posted September 26 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) Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Fundadores Daniel Simoes Posted September 30 Fundadores Share Posted September 30 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 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Fundadores Solution Daniel Simoes Posted September 30 Fundadores Solution Share Posted September 30 @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 3 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Recommended Posts