Ir para conteúdo
  • Cadastre-se

dev botao

AcbrETQ Texto da fonte desconfigurado na imp ZEBRA


Marcelo Bill
  • Este tópico foi criado há 2222 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde

desculpe no retorno da resposta com relação a Unit que voce forneceu para testar

Funcionou a questão do texto que estava desconfigurado, ficou perfeito

Também está acatando o milimetro, legal

No entanto, não consigo deixar um fonte menor que 4, se eu utilizo uma fonte 3, não imprime nada, se eu utilzo fonte 4 sai um texto semelhante courier 14 (algo do tipo)

Fonte=4
Multip H=4
Multip V=4

a combinação que consegue sair impresso é essa, abaixo disso, não imprime nada

Tem alguma outra forma de diminuir ?

Figura A.jpg

Figura B.jpg

Link para o comentário
Compartilhar em outros sites

  • Fundadores
18 minutos atrás, marcelonarezzi disse:

Tem alguma outra forma de diminuir ?

Realmente não sei lhe dizer.. eu precisaria de uma impressora para testes...

6 minutos atrás, marcelonarezzi disse:

Funcionou a questão do texto que estava desconfigurado, ficou perfeito

Obrigado... Vou enviar a modificação para o SVN

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 para o comentário
Compartilhar em outros sites

Daniel

Conforme  a Função ComandoFonte

function TACBrETQZplII.ComandoFonte(aFonte: Integer;
  aOrientacao: TACBrETQOrientacao; aMultVertical, aMultHorizontal: Integer
  ): String;
var
  cFonte: String;
begin
  if (aMultVertical > 10) then
    raise Exception.Create('Multiplicador Vertical deve estar entre 1 e 10');

  if (aMultHorizontal > 10) then
    raise Exception.Create('Multiplicador Horizontal deve estar entre 1 e 10');

  //if aFonte < 10 then
  //  cFonte := chr(48 + aFonte)
  //else
  //  cFonte := chr(55 + aFonte);
  //if not CharInSet(cFonte, ['0'..'9','A'..'Z']) then
  //  raise Exception.Create('Fonte deve estar entre 0 a 35');

  if aFonte = 0 then
    cFonte := ''
  else
    cFonte := chr(aFonte);

  Result := '^A' + cFonte +
                   ConverterOrientacao( aOrientacao ) + ',' +
                   IntToStr(Max(aMultVertical,1))     + ',' +
                   IntToStr(Max(aMultHorizontal,1));

end;

 

Veja que neste caso, conforme lhe informei anteriormente, estava usando Fontes abaixo do numero 10, Sendo assim se eu usar a Fonte=65, vai ser retornado a Fonte "A" para o componente, onde, conforme o Manual

a Fonte "A" é menor que a Fonte "D" conforme imagem a seguir

A proposito, contatei o cliente e o mesmo está ausente, porem disponibilizar a impressora pra mim.

Até o final do dia teremos novidades. 

 

 

ManualImagem.jpeg

Link para o comentário
Compartilhar em outros sites

Cara, a programação aparentemente está correta.

O que manda é que a Fonte é um tipo de Nome da Fonte exemplo: Arial, Courier, MsSanserif, etc,

Mas o que manda mais em relação ao tamanho, é o multiplicador H e V

Se eu usar a Fonte 65=A ou 66=B ou enfim o codigo Asc ele vai determinar que fonte eu quero, e dentro dessa fonte quem vai determinar o altura e Largura são os multiplicadores

No meu Caso estou usando da seguinte forma

Linha=5
Coluna=2
Fonte=65
MultipH=6
MultipV=3
Esse exemplo seria para o código do Produto, enquanto que para descrição eu usaria esse abaixo:
Linha=8
Coluna=2
Fonte=65
MultipH=2
MultipV=1

Assim dessa forma, conforme o ONLINE está ficando XIK

Agora estou agrandando o retorno da Cliente para testar essa configuração. Aparentemente a Unit ACBrZPLII.Pas que voce mandou para teste está correta. 
Aguarde até eu testar para afirmar isso ok

Além disso, a impressora Física está a Caminho, dentro de uns 30 min deve estar por aqui, acho que hoje resolveremos essa parada.

 

Editado por marcelonarezzi
Inclusão
Link para o comentário
Compartilhar em outros sites

Blz, funcionou, era isso mesmo, a regulagem está na Fonte e Multiplicadores

Só tem um problema, depois dessa mudança não sei o motivo de o EAN13 não estar imprimindo

Experimentei "E" no lugar de "F" ele até saiu, mas o "F" que representa EAN 13 não saiu mais

Cara, num vai acreditar, a impressora chegou aqui, é uma Zebra, porem EPL2 (q. m.)

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Observe que agora há um método que permite informar o Cod.barras como um Tipo... e ele aplicará a seguinte conversão:

function TACBrETQZplII.ConverterTipoBarras(TipoBarras: TACBrTipoCodBarra
  ): String;
begin
  case TipoBarras of
    barEAN13      : Result := 'E';
    barEAN8       : Result := '8';
    barSTANDARD   : Result := 'J';
    barINTERLEAVED: Result := '2';
    barCODE128    : Result := 'C';
    barCODE39     : Result := '3';
    barCODE93     : Result := 'A';
    barUPCA       : Result := 'U';
    barCODABAR    : Result := 'K';
    barMSI        : Result := 'M';
    barCODE11     : Result := '1';
  else
    Result := '';
  end;
end;  

 

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 para o comentário
Compartilhar em outros sites

  • Fundadores

Achei necessário efetuar as seguintes modificações nos fontes... a fim de pacificar essa questão das Fontes na Zebra

Citar

-- ACBrETQ --
[+] Adicionada sobrecarga no método "ImprimirTexto", que permite informar a
    "Fonte" como uma String.
[*] O Método "ImprimirTexto", que recebe o parâmetro "Fonte" como Integer,
    aplicará a seguinte lógica: Valores de 0 a 9 são convertidos para String.
    Valores de 10 a 35 são convertidos para 'A' a 'Z'

-- ACBrETQClass, ACBrETQPpla, ACBrETQEpl2, ACBrETQZplII --
[*] Método "ComandoImprimirTexto", modificado para receber a Fonte como String
    https://www.projetoacbr.com.br/forum/topic/40429-acbretq-texto-da-fonte-desconfigurado-na-imp-zebra/

-- ACBrETQZplII --
[*] Modificação em "comandoImprimirTexto", para definir as fontes e rotação,
    como na versao anterior de ACBrETQ. (Usando os comanfos ^CF e ^FW)
[*] Método "ComandoResolucao", modificado para levar em consideração o valor da
    propriedade "ACBrETQ.DPI"

 

26 minutos atrás, marcelonarezzi disse:

Experimentei "E" no lugar de "F" ele até saiu, mas o "F" que representa EAN 13 não saiu mais

F para a Zebra é outro código...

Citar

^BF
Micro-PDF417 Bar Code

 

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 para o comentário
Compartilhar em outros sites

Daniel, muito bacana, com certeza agora a coisa ficou organizada, pois antes eu tinha que fica verificando o tipo de linguagem.

O Único problema é que não consegui fazer uso desse barCode13 por exemplo. Tentei colocar ele na função ImprimirBarra(oNormal, barCode13,etc,etc) mas deu erro de compilação

Ai então usei o codigo da propria EPL2 ImprimirBarra(oNormal, 'E30',etc,etc)

Pode me dar a ultima dica pra matar de vez o problema?

Alias, usando a EPL, acabei colocando o codigo "E30" direto na função e funcionou direitinho. Veja

 

Imagem3.jpeg

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Mas você está imprimindo em uma Zebra ou PPLB ?

Os comandos 3 códigos são completamente diferentes... provavelmente, nesse caso ele só usou o "E"

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 para o comentário
Compartilhar em outros sites

Como eu não consegui usar o barcode13, então pre-defini diretamente o codigo Impressora de acordo com o que estava capturando o componente.

Como lhe disse anteriormente. É uma impressora Zebra mas com a linguagem EPL2 e não a ZPLII.

Porém se voce me indicar como usar a barcode13 e as demais, vou poder criar uma única unit para impressão. Atualmente eu tenho 4 units . (PPLA,PPLB, EPL2 e ZPLII)

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • Fundadores

Que tipo de código você quer imprimir ? Se for apenas números, e sem um tamanho fixo... experimente barINTERLEAVED ou barCODE39

Exemplo:

ImprimirBarras(orNormal, barCODE39, '2', '2', 32, 0, '123456', 90, becSIM);

 

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 para o comentário
Compartilhar em outros sites

  • Fundadores

2.2 - Permaneça no assunto - Quando tiver uma dúvida diferente do assunto no tópico, poste em novo tópico. Não use algo equivalente a "aproveitando o gancho... [dúvida não relacionada com o tópico aqui]". Favor leia as regras do fórum.

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 para o comentário
Compartilhar em outros sites

Daniel

Quando informei da desconfiguração do texto da etiqueta na ZPLII, voce me mandou uma unit que continha a correção.

Bacana, tava tudo funcionando, mas ai percebi que voce subiu essa unit para o svn e com algumas modificações.

no dia 29/12/2017 atualizei o acbr e disponibilizei a aplicação aos clientes.

Como o inicio do ano a coisa é meio devagar, só agora é que a coisa está vindo a tona.

Como ja sabe, não temos impressora Zebra pra testar a aplicação.

Cliente reclamando que a etiqueta estava saindo um borrão .

Foi então que percebi que voces mudaram o Fonte para String, para permitir letras A..Z.

onde eu havia resolvido usando chr(73) Chr(65) enfim.

Ai eu vi a mudança que foi feita na ComandoFonte foi eliminado a Orientação e trocado '^A' por '^CF'

Agora a impressão ta saindo tudo uma em cima da outra.

Veja a imagem. Já tentei aumentar o intervalo entre as linhas, mas não surtiu nenhuma diferença

Voce tem ideia do que poderia fazer isso ?

 

 

Sem título.png

Link para o comentário
Compartilhar em outros sites

Daniel, acho que voce não entendeu.

Eu NÃO tenho impressora pra testar

vou usar aquele site pra testar.

 

Mais um detalhe, acabei de atualizar o componente e percebi que o ComandoUnidade está todo comentado e tem um comentario 

Result := '';  // Todos os comandos são convertidos para etqDots;

talvez seja isso que esteja encavalando todo o texto. Me responda se é isso. Ele não está respeitando o mm ?

 

Editado por marcelonarezzi
Link para o comentário
Compartilhar em outros sites

Eu de novo

Analisando o ACBrETQZplII.pas, percebi que foram desligadas todas as conversões para Dotmm, então aparentemente vou ter que na minha aplicação usar o comando que converte o DotPix para Dotmm 

ConverterUnidade(UnidadeSaida); ? 

Amigo, me perdoe, eu não sou tão bom programador assim, estou tentando entender.

Link para o comentário
Compartilhar em outros sites

Se eu estou entendendo o componente. Como voce desligou o comando que altera Unidade ^MU. essa conversão de unidade deveria estar em todas as posições onde são necessárias, por exemplo, no
imprimirTexto(Fonte,FonteH,FonteV, Coluna, Linha,etc...

ConverterUnidade(Dotmm,Coluna)+ConverterUnidade(Dotmm,Linha);

Algo desse tipo. De outra forma, o etqMilimetros, etqPolegas e EtqDots estaria sem uso. Não sei...

Link para o comentário
Compartilhar em outros sites

  • Fundadores
14 horas atrás, marcelonarezzi disse:

Result := '';  // Todos os comandos são convertidos para etqDots;

A linguagem dessa impressora espera todas as medidas em Dots

13 horas atrás, marcelonarezzi disse:

Se eu estou entendendo o componente. Como voce desligou o comando que altera Unidade ^MU. essa conversão de unidade deveria estar em todas as posições onde são necessárias, por exemplo, no
imprimirTexto(Fonte,FonteH,FonteV, Coluna, Linha,etc...

Esse comando não funcionava, no Emulador que você indicou...

Você pode usar a medida que desejar... o componente converterá para Dots antes de enviar para a impressora

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 para o comentário
Compartilhar em outros sites

  • Fundadores

Atualizei os Demos do ACBrETQ, para demonstrar a impressão de uma etiqueta em ZPLII

O exemplo abaixo, é gerado pelo código

        ImprimirTexto(orNormal, 'Q', 1, 1, 15, 55, 'BISCOITO MARILAN RECH 335G', 0, True);
        ImprimirTexto(orNormal, 'Q', 1, 1, 60, 55, 'CHOC BRANCO');
        ImprimirBarras(orNormal, barEAN13, 2, 2, 95, 55, '7896003701685', 90, becSIM);
        ImprimirTexto(orNormal, 'R', 1, 1, 100, 270, 'R$');
        ImprimirTexto(orNormal, 'R', 1, 1, 135, 270, '20.59'); 

image.png

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 para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2222 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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.