在水晶报告中生成条形码EAN13

时间:2018-01-17 08:35:18

标签: crystal-reports barcode ean-13

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

1 个答案:

答案 0 :(得分:0)

这个例子对我有用:

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

使用CrystalReport打印EAN13创建公式(sintaxis Basic):

enter image description here

使用此代码:

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

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

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

或者替代方案:

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

通过调用添加文本公式。例如:

enter image description here

使用安装的字体配置它:

enter image description here

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

enter image description here

有关详细信息,请参阅此网址:

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