在 PHP 中创建 code128 条形码,使用字体而不是将其渲染为图像
Creating a code128 barcode in PHP, using a font instead of rendering it as an image
我需要能够将任何字符串转换为可以打印在 PDF 上的 code128 条形码。
我的想法是将 code128 字体嵌入到 PDF 中,然后简单地使用该字体来呈现我需要显示为条形码的字符串,一个字母一个字母。
但是,我发现我还需要计算校验和并包括开始和结束字符。
使用 PHP 是不可能的吗?我没有在任何地方找到任何解决方案。我能找到的唯一解决方案是直接将条形码渲染为图像,这对我目前的情况没有帮助,因为我需要使用字体在 PDF 中创建条形码。
如果您将努力限制在 128B,您可以使用大小写字符、数字和大多数标点符号。它还使您不必编写代码来移入和移出 A 和 C 符号。这使得计算校验和的代码非常简单。
Code 128B 起始字符的值为 104。所有 Code 128 变体的终止字符值为 106,但该值不计入校验和计算。让我们选择字符串 "Hello" 进行现实生活中的练习。您需要确保可以访问 Code 128 table。我将要讨论的所有值都来自 table,而不是 ASCII 或 UTF-8。
校验和的计算方法是将字符值与其在条码中位置的倍数相加(起始码除外)。
虽然起始码的位置是‘1’,但起始码后的第一个字符的位置也是‘1’。所以起始码和数据的第一个字节('H')都乘以数字1((104×1)+(40×1)= 144)。
接下来的 4 个字节得到一个递增的更高乘数 ((69 x 2) + (76 × 3) + (76 × 4) + (79 × 5) = 1065)。将它们加在一起 (144 + 1065) 我们得到 1209。
您应该能够在 PHP 中使用取模运算符 (1209 % 103) 为代码 128B 字符串“Hello”的校验和字符获取 76(103 是常数,相信我那)。因此,将 "Hello" 映射到 Code 128 条形码的最终代码数组是:
[104 40 69 76 76 79 76 106].
您需要查找 tables 以将字符串字符值转换为 Code 128B 字符值,以符合您的条形码字体的预期。但您所需要的只是一个循环、一个数组索引、一个用于因子总和的累加器和一个针对常量值 103 的取模运算符。
在 PHP 中为 PDF 生成条形码的最简单方法是使用专用软件库。
AFAIK,目前最完整的是 tc-lib-barcode (https://github.com/tecnickcom/tc-lib-barcode),它允许您生成线性和二维条形码。包含的示例应该可以让您快速入门。
源代码完全符合 PSR-2 标准,可以使用 Composer.
轻松添加到您的 PHP 项目中
原始代码已从 TCPDF 移植和重构,并已在数十亿文档中使用。
我需要能够将任何字符串转换为可以打印在 PDF 上的 code128 条形码。
我的想法是将 code128 字体嵌入到 PDF 中,然后简单地使用该字体来呈现我需要显示为条形码的字符串,一个字母一个字母。
但是,我发现我还需要计算校验和并包括开始和结束字符。
使用 PHP 是不可能的吗?我没有在任何地方找到任何解决方案。我能找到的唯一解决方案是直接将条形码渲染为图像,这对我目前的情况没有帮助,因为我需要使用字体在 PDF 中创建条形码。
如果您将努力限制在 128B,您可以使用大小写字符、数字和大多数标点符号。它还使您不必编写代码来移入和移出 A 和 C 符号。这使得计算校验和的代码非常简单。
Code 128B 起始字符的值为 104。所有 Code 128 变体的终止字符值为 106,但该值不计入校验和计算。让我们选择字符串 "Hello" 进行现实生活中的练习。您需要确保可以访问 Code 128 table。我将要讨论的所有值都来自 table,而不是 ASCII 或 UTF-8。
校验和的计算方法是将字符值与其在条码中位置的倍数相加(起始码除外)。
虽然起始码的位置是‘1’,但起始码后的第一个字符的位置也是‘1’。所以起始码和数据的第一个字节('H')都乘以数字1((104×1)+(40×1)= 144)。
接下来的 4 个字节得到一个递增的更高乘数 ((69 x 2) + (76 × 3) + (76 × 4) + (79 × 5) = 1065)。将它们加在一起 (144 + 1065) 我们得到 1209。
您应该能够在 PHP 中使用取模运算符 (1209 % 103) 为代码 128B 字符串“Hello”的校验和字符获取 76(103 是常数,相信我那)。因此,将 "Hello" 映射到 Code 128 条形码的最终代码数组是: [104 40 69 76 76 79 76 106].
您需要查找 tables 以将字符串字符值转换为 Code 128B 字符值,以符合您的条形码字体的预期。但您所需要的只是一个循环、一个数组索引、一个用于因子总和的累加器和一个针对常量值 103 的取模运算符。
在 PHP 中为 PDF 生成条形码的最简单方法是使用专用软件库。
AFAIK,目前最完整的是 tc-lib-barcode (https://github.com/tecnickcom/tc-lib-barcode),它允许您生成线性和二维条形码。包含的示例应该可以让您快速入门。
源代码完全符合 PSR-2 标准,可以使用 Composer.
轻松添加到您的 PHP 项目中原始代码已从 TCPDF 移植和重构,并已在数十亿文档中使用。