FONTE CODIGO DE BARRAS

FFECHER 25/04/2024 17:14:29
#503288
Boa tarde
Preciso de uma ajuda alguem tem algum arquivo fonte que funcione no crystal 8.5 para imprimir ean 13 mas que caiba numa etiqueta de 4 cm de largura aquela etiqueta padrao que loja de roupa usa com tres partes picotadas.
Obrigado antecipadamente
Fernando Fecher
SINCLAIR 25/04/2024 17:54:56
#503289
Alterado em 25/04/2024 17:58:51 Colega,

Vou te enviar o arquivo .TTF da fonte EAN13 (uso aqui para o mesmo propósito seu) e a função para converter o texto a ser usado pela fonte (a menos que você tenha algo pronto dentro do CR 8.5, eu uso CR 11.5 então desconheço alguma função interna).

Por exemplo, para imprimir 7894561230123 você não imprime este número da forma como está, você deverá usar a função abaixo para converter para o que a fonte TTF usa (a menos que você tenha isto dentro do CR 8.5 e vá usar em um campo de fórmula, como mencionei acima).

Em sistema legados VB6 eu tenho uma tabela temporária com campo "cod_barras" e nele coloco o número convertido, como por exemplo o 7894561230123 para alguma coisa e imprimo esta "alguma coisa" usando a fonte TTF.

Segue a função em VB6 e o ZIP com o arquivo TTF:

  Public Function fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_EAN_13(ByVal NumeroSemDV$) As String

'-----------------------------------------------------------------------------------
' NOTA INCIAL !
'-----------------------------------------------------------------------------------
' Esta função gera a sequência a ser usada pela fonte Code EAN13. Devem ser passa- !
' dos os 12 primeiros dígitos, porque o 13o. (que é o dígito verificador) será cal-!
' culado pela função. Caso sejam passados 13 dígitos, ou seja, o número completo !
' (incluindo o dígito verificador), então a função recalcula o 13o. dígito (que é !
' o dígito verificador). !
'-----------------------------------------------------------------------------------

On Error GoTo erro

Dim DigitoVerificadorEAN13 As String

If Len(NumeroSemDV$) = 13 Then NumeroSemDV$ = Left$(NumeroSemDV$, 12)

Dim I%, checksum%, first%, CodeBarre$, tableA As Boolean

fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_EAN_13 = ""

'Vérifier qu'il y a 12 caractères 'Check for 12 characters
If Len(NumeroSemDV$) = 12 Then
'Et que ce sont bien des chiffres 'And they are really digits
For I% = 1 To 12
If Asc(Mid$(NumeroSemDV$, I%, 1)) < 48 Or Asc(Mid$(NumeroSemDV$, I%, 1)) > 57 Then
I% = 0
Exit For
End If
Next I%
If I% = 13 Then
'Calcul de la clé de contrôle 'Calculation of the checksum
For I% = 2 To 12 Step 2
checksum% = checksum% + Val(Mid$(NumeroSemDV$, I%, 1))
Next I%
checksum% = checksum% * 3
For I% = 1 To 11 Step 2
checksum% = checksum% + Val(Mid$(NumeroSemDV$, I%, 1))
Next I%
NumeroSemDV$ = NumeroSemDV$ & (10 - checksum% Mod 10) Mod 10
'Le premier chiffre est pris tel quel, le deuxième vient de la table A 'The first digit is taken just as it is, the second one come from table A
CodeBarre$ = Left$(NumeroSemDV$, 1) & Chr$(65 + Val(Mid$(NumeroSemDV$, 2, 1)))
first% = Val(Left$(NumeroSemDV$, 1))
DigitoVerificadorEAN13 = Val(Right$(NumeroSemDV$, 1))
For I% = 3 To 7
tableA = False
Select Case I%
Case 3
Select Case first%
Case 0 To 3
tableA = True
End Select
Case 4
Select Case first%
Case 0, 4, 7, 8
tableA = True
End Select
Case 5
Select Case first%
Case 0, 1, 4, 5, 9
tableA = True
End Select
Case 6
Select Case first%
Case 0, 2, 5, 6, 7
tableA = True
End Select
Case 7
Select Case first%
Case 0, 3, 6, 8, 9
tableA = True
End Select
End Select
If tableA Then
CodeBarre$ = CodeBarre$ & Chr$(65 + Val(Mid$(NumeroSemDV$, I%, 1)))
Else
CodeBarre$ = CodeBarre$ & Chr$(75 + Val(Mid$(NumeroSemDV$, I%, 1)))
End If
Next I%
CodeBarre$ = CodeBarre$ & "*" 'Ajout séparateur central / Add middle separator
For I% = 8 To 13
CodeBarre$ = CodeBarre$ & Chr$(97 + Val(Mid$(NumeroSemDV$, I%, 1)))
Next I%
CodeBarre$ = CodeBarre$ & "+" 'Ajout de la marque de fin / Add end mark
fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_EAN_13 = CodeBarre$ & "^" & DigitoVerificadorEAN13
End If
End If

'Sair da Função
SAIRDAFUNCAO:
Exit Function
erro:
Msgbox "Erro ao calcular o código de barras e dígito verificador EAN13"

End Function
FFECHER 26/04/2024 10:24:03
#503290
Valeu meu amigo muito obrigado vou testar no cliente ele ta agarrado com 10000 pecas de roupa la vendeu mas o cara exige que tenha ean13 vou ver na etiqueta se vai ler muito obrigado qualquer duvida abuso do amigo novamente
Fernando Fecher
Faça seu login para responder