JuxtaPOS V3 — NFC-e não imprime DANFE no Windows 7
imprimirSintoma
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 Condensednão suporta o estiloRegular.
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 utilizarnet6.0-windowsno JuxtaPOS V3.
Implantação
Antes da substituição:
- Fechar completamente o JuxtaPOS V3.
- Fazer backup da
NFe.Danfe.Nativo.dllinstalada. - Substituir somente
NFe.Danfe.Nativo.dllpela versão corrigidanet462. - Abrir novamente o JuxtaPOS.
- Utilizar Imprimir novamente em uma NFC-e já autorizada.
- 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.