在 Crystal Reports 中生成二维码
SAP Crystal Reports 2008 / 2011 / 2013 / 2016 为 32 位。
SAP Crystal Reports 2020 / 2025 为 64 位。
1.1 如果您的 SAP Crystal Reports 解决方案是 64 位的,请按照以下步骤注册 64 位文件 cruflbcs_x64.dll。
右键单击“命令提示符(Command Prompt)”并选择“以管理员身份运行”。

输入以下命令以注册 64 位 DLL:
cd "C:\Program Files\Common Files\Barcodesoft\FontUtil"
%systemroot%\System32\regsvr32.exe cruflbcs_x64.dll
1.2 如果您的 SAP Crystal Reports 解决方案是 32 位的,请按照以下步骤注册 32 位文件 cruflbcs.dll。
输入以下命令以注册 32 位 cruflbcs.dll 文件:
cd "C:\Program Files (x86)\Common Files\Barcodesoft\FontUtil"
regsvr32.exe cruflbcs.dll

如果出现以下弹窗,则表示您的注册已成功。

2. 打开您的 Crystal Report。右键点击“公式字段 (Formula Fields)”,并从上下文菜单中选择“新建... (New...)”。在名称输入框中输入 "qrcode1",然后点击“使用编辑器 (Use Editor)”。
3. 经过二维码编码后,即使是很短的字符串,返回的代码字(codewords)也可能超出您的预期。然而,Crystal Reports 不允许在单个公式字段中超过 254 个字符。因此,在应用 BcsQRCode 字体之前,我们必须将 QR Code 代码字分成不同的部分,并将它们连接在一个“文本对象 (Text Object)”中。要了解需要多少个公式字段,请使用以下函数:
BCSQRCodeFormulaNoForCR({Data.Code})
4. 如果返回的代码字多于 255 个字符,请按如下所示创建多个公式字段。然后将它们按顺序拖放到同一个文本对象中。
Local stringVar codestr := "QRCode" + Chrw(13) + chrw(10) + {Test.Data};
BCSQRCodeEncodeCR({Test.Data}, 1, 1, 0, 0)
Local stringVar codestr := "QRCode" + Chrw(13) + chrw(10) + {Test.Data};
BCSQRCodeEncodeCR({Test.Data}, 2, 1, 0, 0)
Local stringVar codestr := "QRCode" + Chrw(13) + chrw(10) + {Test.Data};
BCSQRCodeEncodeCR({Test.Data}, 3, 1, 0, 0)
公式字段第一个参数是要编码的字符串。
公式字段第二个参数是索引。
公式字段第三个参数是纠错级别。其值范围为 1 到 4,分别代表 L07、M15、Q25 和 H30。如果默认设置为 0,则对应纠错级别 M15。
对于 Girocode 或欧洲支付理事会 (EPC) QR Code 用户,请设置以下公式:
BCSQRCodeEncodeCR(str, 1, 1 )
BCSQRCodeEncodeCR(str, 2, 1)
BCSQRCodeEncodeCR(str, 3, 1)
请在每个数据段落后添加 & "�a;"。这将会被解析为 ASCII 码 0A。
您会在报告中看到十六进制代码。别担心!这是因为您还没有应用 QR Code 条形码字体。
5. 右键点击文本对象,并从上下文菜单中选择“设置对象格式 (Format Object)”。然后选择 "BcsQRcode" 作为该文本对象的字体。
6. 点击确定按钮。您将会在报告中看到二维码显示出来。
7. 如果您想在报告中使用 GS1 二维码,请使用 BCSQRCodeEncodeCRGS1 公式。
BCSQRCodeEncodeCRGS1(str, 2, 0);
BCSQRCodeEncodeCRGS1(str, 3, 0);
第一个参数是 str。在被 cruflbcs.dll 编码为 GS1 二维码之前,您的数据必须符合这种格式:(17)190508(90)50921。请在每个应用标识符 (AI) 的前后加上圆括号。在需要时,系统会自动为您添加 FNC1 字符。
第二个参数是您的公式索引。
第三个是纠错级别。