Ir para conteúdo
  • Cadastre-se

Recommended Posts

Postado

Estou desenvolvendo um serviço fiscal com lazarus. Eu tenho duas versões do mesmo projeto. A versão LCL (visual) que utilizo em desenvolvimento, facilitando o debug. E a versão Daemon, que é utilizado em produção e instalada como serviço do Windows. 

Sei que serviço do windows tem algumas limitações por não ter o contexto do usuário (eu não deleguei o usuário em LOGON do serviço). Porém estou com alguns problemas ao gerar o arquivo PDF da NFC-e. 

Na versão LCL, ele gera o arquivo normalmente, com as fontes tudo certo. Porém na versão Daemon, as fontes fica desporporcional. 

No print a seguir, a imagem da esquerda foi gerada pelo serviço, a da direita pela versão LCL.

image.png.ddc26665c70436e4b13cda35457bfe4d.png

Estava utilizando o componente Fortes para a geração do PDF. Eu tentei trocar pelo componente TACBrNFCeDANFeFPDF. Aparentemente ajustatando a propriedade LarguraBobina desse novo componente, ele gera com fontes aceitavel. Porém o layout fica diferente do Fortes.

Alguém ja passou por algo semelhante? Sei que o problema não está no ACBr em si. Mas existe algo que consiga configurar para corrigir o carregamento das fontes?

  • Consultores
Postado

é acesso ao fontes do windows. provavelmente por isso.

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

Inicialmente suspeitei que o problema estivesse relacionado ao acesso às fontes do Windows. Para validar isso, configurei o serviço para rodar com um usuário específico, garantindo permissões adequadas. Porém o comportamento permaneceu o mesmo.

Em seguida, fiz testes isolados fora do Fortes Report. Criei um TBitmap e renderizei textos utilizando diferentes fontes (Arial, Lucida Console, etc.), tamanhos e estilos (incluindo negrito). Nesses testes, o serviço conseguiu carregar e aplicar corretamente as fontes, sem problemas aparentes.

No entanto, identifiquei que a escala de renderização é diferente entre os ambientes. 

Ao usar o seguinte código para obter o TextWidth, ele retorna tamanhos diferentes de texto da versão LCL para a versão Daemon.

LBMP.Canvas.TextWidth
  • Versão LCL: 93

  • Serviço (Daemon): 65

Acredito que isso impacta diretamente no Fortes ao montar o relatório

  • Consultores
Postado

Sim mas dai tu tem no componente como configurar isso. só confer ali

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

Eu já habia tentado ajustar as propriedades :

AlterarEscalaPadrao := True;
NovaEscala := CalculateScale; // Aqui tentei diversos valores, maior ou menor que a escala padrão 96

Eu percebi o valor de Screen.PixelsPerInch no trecho a baixo, são diferentes em um projeto LCL para um projeto Daemon
 

procedure TACBrNFeDANFCeFortes.ImprimirInterno(const Cancelado: Boolean;  const DanfeResumido: Boolean;
  const AFiltro: TACBrNFeDANFCeFiltro; const  AStream: TStream);
var
  frACBrNFeDANFCeFortesFr: TACBrNFeDANFCeFortesFr;
  RLLayout: TRLReport;
  RLFiltro: TRLCustomSaveFilter;
begin
  frACBrNFeDANFCeFortesFr := TACBrNFeDANFCeFortesFr.Create(Self);
  try
    with frACBrNFeDANFCeFortesFr do
    begin
      if AlterarEscalaPadrao then
      begin
        frACBrNFeDANFCeFortesFr.Scaled := False;
        frACBrNFeDANFCeFortesFr.ScaleBy(NovaEscala , Screen.PixelsPerInch);
      end;  

no LCL retorna 96
no Daemon retorna 72

Postado

Nada ainda. 

Nessa imagem é como está sendo impresso a NFC-e utilizando o componente Fortes com escala padrão no modo Daemom. Reapare que as letras parecem se sobrepor.
image.png.2c74813f2087c6b5fbab6aba04336714.png

Nessa outra imagem, eu ajusto a escala para menos, 60, ainda utilizando o modo Daemon. Repare que ele de fato ajusta a escala, mas a fonte continua sobrepondo

image.png.de6f272fd59c6d542c6be769701a0c43.png

Da mesma forma, se eu aumento a escala (120, ainda com o modo Daemon), ele aplica corretamente, porem as fontes continua sobrepondo

image.png.9abb5f1eacaa1fda3caa939a67e4983e.png

 

Agora utilizando o mesmo codebase, porem compilando com o projeto LCL, reparece como as fontes ficam corretas
image.png.be0262ec71b6b3eb6e5c615ea0d58e90.png

Postado

Eu fiz um teste, trocando o componente TACBrNFeDANFCeFortes pelo TACBrNFCeDANFeFPDF, a fonte parece normalizada, porém o layout do relatório fica bem diferente da versão do Fortes.

Usando o TACBrNFCeDANFeFPDF, o layout permanece o mesmo entre as versões LCL e Daemon

Acredito que possa ser algum comportamento do Fortes quando o projeto não há parte visual
image.png.46d846844280686cca9bf47eb74583b7.png

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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