-4

我想从字符串生成条形码 EAN13(例如:1234567890123)或者我可以在哪里免费下载 EAN13.ttf?

4

1 回答 1

1

这个例子对我有用:

http://www.aliquo.software/howto-generar-ean13-crystal-report/

要使用 CrystalReport 打印 EAN13,请创建一个公式(sintaxis Basic):

在此处输入图像描述

使用此代码:

Function Generar_EAN13(Codigo As String) As String
' Esta función permite generar el código de barras para mostrarlo con la fuente EAN13.TTF
' - Parametros : código de 12 o 13 dígitos
' - Retorno: retorna una cadena que permite representar generar el código de barras con la fuente EAN13.TTF
'            retorna una cadena vacía si no se puede representar el código de barras

dim i,  first, checksum as number
dim code, code13 as string
dim tableA as boolean

' Evaluar los dígitos del código
If Len(Codigo) = 12 then
    code = Codigo
ElseIf Len(Codigo) = 13 then
    code = Left(Codigo,12)
Else
    code = ""
end If

' VerIficar los dígitos del código
For i = 1 To LEN(code)
    If Asc(Mid(code, i, 1)) < 48 Or Asc(Mid(code, i, 1)) > 57 Then
        code = ""
        Exit For
    End If
Next

' Chequea los 12 dígitos y cálcula el digito de control
If Len(code) = 12 Then
    For i = 12 To 1 Step -2
        checksum = checksum + Val(Mid(code, i, 1))
    Next
    checksum = checksum * 3
    For i = 11 To 1 Step -2
        checksum = checksum + Val(Mid(code, i, 1))
    Next
    code = code & ToText((10 - checksum Mod 10) Mod 10,0)

    ' Si el código inicial tenía 13 dígitos comprueba si el nuevo código generado
    ' es igual y en caso contrario no se generar ningún código
    If Len(Codigo)=13 and Codigo<>code then
        code = ""
    end If
End If

' Chequea los 13 dígitos
If Len(code) = 13 Then
    ' Los primeros 2 dígitos que suelen corresponder al código del país
    code13 = Left(code, 1) & Chr(65 + Val(Mid(code, 2, 1)))
    first = Val(Left(code, 1))

    ' Generar los códigos del primer bloque de dígitos
    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
            code13 = code13 & Chr(65 + Val(Mid(code, i, 1)))
        Else
            code13 = code13 & Chr(75 + Val(Mid(code, i, 1)))
        End If
    Next

    ' Añadir el separador de los bloques
    code13 = code13 & "*"

    ' Generar los códigos del segundo bloque de dígitos
    For i = 8 To 13
        code13 = code13 & Chr(97 + Val(Mid(code, i, 1)))
    Next

    ' Añadir la marca final
    code13 = code13 & "+"
End If

Generar_EAN13=code13

End Function

在您的 PC 中安装此字体 (EAN13.ttf):

http://download.aliquosoftware.net/documentation/ean13.ttf

或者从这里替代:

http://grandzebu.net/informatique/codbar/ean13.ttf

在调用中添加文本公式。例如:

在此处输入图像描述

使用安装的字体对其进行配置:

在此处输入图像描述

然后,您将看到 EAN 13 代码:

在此处输入图像描述

有关更多信息,您可以查看此网站:

http://grandzebu.net/informatique/codbar-en/ean13.htm

于 2018-04-10T13:58:59.310 回答