我想从字符串生成条形码 EAN13(例如:1234567890123)或者我可以在哪里免费下载 EAN13.ttf?
问问题
6447 次
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 代码:
有关更多信息,您可以查看此网站:
于 2018-04-10T13:58:59.310 回答