在使用字体(不是图像也不是 javascript)的网页中显示 Code128
Posted
技术标签:
【中文标题】在使用字体(不是图像也不是 javascript)的网页中显示 Code128【英文标题】:Display Code128 In a Web page using font (not image nor javascript) 【发布时间】:2015-10-17 11:16:26 【问题描述】:我需要在一个 html 页面中显示一些 Code 128 代码,在我的场景中,我不想生成图像或使用 javascript 来构建条形码。 用户通过程序编辑 html(模板),然后将 HTML 转换为 PDF 并发送到打印机,但是图像会给转换器带来一些问题,所以我尽量避免使用它们,不支持 javascript。
我从这里下载了 Code 128 字体:http://www.dafont.com/it/code-128.font,我使用它如下:
<font face="Code 128">code</font>
但仍有普通文本(不是代码 128 条码)。
关于如何使用字体显示安装的 Code 128 字体的任何建议?
【问题讨论】:
【参考方案1】:font
标签真的老了,不应该使用。 HTML5 完全不支持它。最好使用 CSS 中的 face,但必须使用正确的名称。此外,字体必须安装在客户端 PC 上。
也许更好:您也可以在 CSS 中声明字体,因此字体文件从您的服务器下载,因为条形码字体不常用。
您可以使用@font-face
规则在CSS 中定义字体。然后你可以在你的 CSS 中使用这张脸。您必须拥有不同格式的字体文件。对于常用的,woff
和 woff2
就可以了。您可以使用任何在线字体转换器将下载的 ttf 文件转换为 woff。谷歌搜索'convert ttf to woff'会给你一打。
@font-face
font-family: 'Code128';
src: url('code128.woff2') format('woff2'),
url('code128.woff') format('woff');
之后,您可以像这样在 CSS 中使用它:
.barcode
/* Use the name of the face that is installed, or the one you defined above */
font-family: 'Code128';
然后您可以使用类名将字体应用于任何元素:
<span class="barcode">code</span>
CSSTricks.com 上有一个很好的教程,其中包含更多细节和更好的浏览器回退。
【讨论】:
感谢您的帮助,但是转换器(到 PDF)不太支持 css,所以我尝试使用纯 html。实际上我在工作站(没有客户端服务器)上工作(并且在生产中我会工作),html 仅用作模板(然后转换为 PDF)。在每个工作站(生产中)上安装字体不是问题。在这些限制下有没有办法使用 code128 字体? 我不这么认为,只要你有正确的名字。不过我想知道,为什么将其转换为 PDF 然后打印呢?也许打印 HTML 本身同样容易?但这是一个艰难的领域。我不知道你的要求的所有细节,我什至不知道你使用的是哪个 PDF 转换器。【参考方案2】:'0~9 and A~Z Barcode
Public Function GenerateCode128A(St As String) As String
Dim sum As Integer = 0
For i As Integer = 1 To Len(St)
sum += ((Asc(Mid(St, i, 1)) - 32) * i)
Next
sum = (sum + 103) Mod 103
If (sum >= 95) Then sum += 68
Return Chr(203) & St & Chr(sum + 32) & Chr(206)
End Function
'0~9 and A~Z and a~z Barcode
Public Function GenerateCode128B(St As String) As String
Dim sum As Integer = 0
For i As Integer = 1 To Len(St)
sum += ((Asc(Mid(St, i, 1)) - 32) * i)
Next
sum = (sum + 104) Mod 103
If (sum >= 95) Then sum += 68
Return Chr(204) & St & Chr(sum + 32) & Chr(206)
End Function
'0~9 Number Only Small width
Public Function GenerateCode128C(St As String) As String
If Len(St) Mod 2 = 1 Then St = "0" + St
Dim sum As Integer = 0
Dim Stn As String = ""
For i As Integer = 1 To Len(St) Step 2
Dim ch As Int16 = Int16.Parse(Mid(St, i, 2))
sum += (ch * ((i \ 2) + 1))
If (ch >= 95) Then ch += 68
Stn &= Chr(ch + 32)
Next
sum = (sum + 105) Mod 103
If (sum >= 95) Then sum += 68
Return Chr(205) & Stn & Chr(sum + 32) & Chr(206)
End Function
【讨论】:
你不能在没有任何解释的情况下发布代码。请更新您的答案。以上是关于在使用字体(不是图像也不是 javascript)的网页中显示 Code128的主要内容,如果未能解决你的问题,请参考以下文章
Pyramid 无法访问静态资产(既不是 .jpg 图像也不是 .js 文件)