Artigo da Central de Ajuda

Documentação Juxta

Leia as instruções abaixo ou use a busca para encontrar outro assunto.

JuxtaPOS V3 — NFC-e não imprime DANFE no Windows 7

imprimir
0

Sintoma

Após atualização dos componentes fiscais do JuxtaPOS V3, computadores com Windows 7 conseguem processar/autorizar a NFC-e, porém o DANFE não é impresso.

Também pode ocorrer de novas imagens do DANFE deixarem de ser geradas na pasta Imagem JPEG.

No log nfce_2026.log, o erro identificado foi relacionado à fonte:

Open Sans Condensed não suporta o estilo Regular.

Diagnóstico

O problema não estava na autorização da NFC-e, comunicação com a SEFAZ ou impressora.

A falha ocorria dentro do componente:

NFe.Danfe.Nativo.dll

mais especificamente na classe:

NFe.Danfe.Nativo.GraphicsPrinter.AdicionarTexto

O código original criava a fonte desta forma:

 
if (font == null)
{
    Fonte = new Font(FontPadrao, TamanhoFonte);
}
 

Esse é exatamente o ponto presente no fonte do Zeus que analisamos.

Em determinadas instalações do Windows 7, a fonte padrão Open Sans Condensed utilizada pelo componente não oferece corretamente o estilo Regular, causando System.ArgumentException durante a renderização.

Como a mesma renderização é utilizada para gerar o JPEG e imprimir o DANFE, as duas operações falham.

Solução aplicada

Foi alterado GraphicsPrinter\AdicionarTexto.cs para possuir fallback para Arial:

 
if (font == null)
{
    try
    {
        Fonte = new Font(
            FontPadrao,
            TamanhoFonte,
            FontStyle.Regular
        );
    }
    catch
    {
        Fonte = new Font(
            "Arial",
            TamanhoFonte,
            FontStyle.Regular
        );
    }
}
 

Assim, sistemas onde a fonte padrão funciona continuam utilizando-a normalmente.

Quando a criação da fonte falha, o componente utiliza automaticamente Arial Regular, compatível com Windows 7.

Compilação

O projeto utilizado é:

NFe.Danfe.Nativo

Após a alteração, recompilar o projeto e utilizar a saída:

bin\Release\net462\NFe.Danfe.Nativo.dll

ou bin\Debug\net462\ durante testes.

Importante: utilizar a compilação net462. Não utilizar net6.0-windows no JuxtaPOS V3.

Implantação

Antes da substituição:

  1. Fechar completamente o JuxtaPOS V3.
  2. Fazer backup da NFe.Danfe.Nativo.dll instalada.
  3. Substituir somente NFe.Danfe.Nativo.dll pela versão corrigida net462.
  4. Abrir novamente o JuxtaPOS.
  5. Utilizar Imprimir novamente em uma NFC-e já autorizada.
  6. Confirmar a geração do JPEG e a impressão física do DANFE.

Não realizar downgrade do conjunto de DLLs fiscais.

Durante o diagnóstico foi constatado que versões anteriores das bibliotecas resolviam a impressão, porém causavam problemas na emissão fiscal atual.

Resultado

Após substituir NFe.Danfe.Nativo.dll pela compilação corrigida:

 NFC-e permanece sendo emitida normalmente
 DANFE volta a ser gerado
 Impressão volta a funcionar no Windows 7
 Não é necessário instalar Open Sans Condensed no computador
 Não é necessário fazer downgrade das demais DLLs do Zeus

Observação para futuras atualizações

ATENÇÃO

Uma atualização futura do Zeus/DFe.NET poderá sobrescrever NFe.Danfe.Nativo.dll e remover essa correção.

Antes de atualizar os componentes fiscais, verificar se o tratamento de fontes já foi corrigido oficialmente ou reaplicar o fallback em:

NFe.Danfe.Nativo\GraphicsPrinter\AdicionarTexto.cs

Eu colocaria no WHMCS uma categoria tipo Base de Conhecimento → JuxtaPOS V3 → Fiscal → Solução de Problemas e deixaria esse artigo privado/interno. A parte de recompilar e substituir DLL é perigosa demais para cliente final seguir sozinho.

E eu ainda anexaria ao artigo a nossa NFe.Danfe.Nativo.dll corrigida para Windows 7. Assim, se outro cliente apresentar isso daqui a meses, não precisamos nem recompilar: consultamos o artigo, fazemos backup, aplicamos a DLL e testamos.

Esta resposta lhe foi útil?