安装 php-barcode-generator 失败主因是 PHP 版本低于 7.4,v2.x 要求 ≥7.4,需改用 composer require picqer/php-barcode-generator:^1.2;v1.x 不支持 SVG,且 Code128 不支持中文,须预处理或叠加文字渲染。

安装 php-barcode-generator 时为什么 composer require 失败?
直接运行 composer require picqer/php-barcode-generator 失败,大概率是因为当前 PHP 版本低于 7.4 —— 该库的最新版(v2.x)已放弃对 PHP 7.3 及更早版本的支持。若你用的是 PHP 7.2 或 7.3,必须显式指定兼容版本:composer require picqer/php-barcode-generator:^1.2。另外注意,v1.x 不支持 SVG 输出,只提供 PNG 和 JPEG;v2.x 才完整支持 GeneratorSVG、GeneratorPDF 等。
生成 Code128 条形码时中文字符乱码或报错
Code128 本身不原生支持中文,强行传入 UTF-8 字符串会触发 InvalidArgumentException 或输出空白图像。解决方法只有两个:
一是改用支持汉字的码制,比如 GeneratorJPG + GeneratorPNG 配合 GeneratorC39(仅限数字/字母)或 GeneratorEAN13(纯数字);
二是预处理字符串:用 iconv 或 mb_convert_encoding 转成 ISO-8859-1(仅当内容为拉丁字符集时安全),但对中文无效。
真正可行的路径是:用 GeneratorPDF 或 GeneratorSVG 时,手动叠加 TrueType 字体文本层(需额外调用 GD 或 TCPDF 渲染文字),库本身不负责字体渲染。
- 不要传
"你好123"给generate(),会直接抛异常 - 测试时优先用纯数字如
"123456789012"(EAN13 要求 12 位)或"ABC123"(Code39 允许字母) - 若必须显示中文,生成条码后用 GD 函数在图像上加文字,而非依赖库内置文本
如何输出 SVG 而不是 PNG?
v2.x 提供了 GeneratorSVG 类,但它不写文件,只返回原始 SVG 字符串。你不能直接用 file_put_contents() 存成 .svg 就完事——缺少 XML 声明和 DOCTYPE 会导致部分浏览器无法渲染。正确做法是手动补全头部,并设置响应头:
use Picqer\Barcode\GeneratorSVG;
$generator = new GeneratorSVG();
$svg = $generator->getBarcode('0123456789', $generator::TYPE_CODE_128);
header('Content-Type: image/svg+xml');
echo '<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">' . $svg;
注意:$generator::TYPE_CODE_128 是常量,不是字符串;漏掉 getBarcode() 的第二个参数会报错;GeneratorSVG 不接受 setFontSize() 这类 GD 相关方法,它只管路径生成。
立即学习“PHP免费学习笔记(深入)”;
生成 PDF 条码时出现空白页或尺寸错乱
GeneratorPDF 返回的是原始 PDF 数据流(非文件路径),且默认尺寸单位是毫米,画布为 A4(210×297mm)。如果你直接用 file_put_contents('out.pdf', $pdf),打开可能只看到白纸——因为条码被画在左下角,默认大小仅几毫米高,肉眼难见。调整方式有二:
- 用
setScale(3)放大整体图形(推荐,数值越大越清晰) - 用
setOffset(50, 50)把条码挪到页面中央(单位:毫米) - 生成后务必用
header('Content-Type: application/pdf')并echo $pdf,别存盘再读取——二次读取可能损坏二进制流
另外,GeneratorPDF 不支持透明背景,所有输出均为白底黑码,没法改颜色。



















