二维码 (QR Code)

在 Crystal Reports 中生成二维码

1. 确认您所使用的 SAP Crystal Reports 解决方案的架构(32 位还是 64 位)。
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)”并选择“以管理员身份运行”。
qr code command prompt as administrator



输入以下命令以注册 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

register cruflbcs.dll commands for qr code



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



2. 打开您的 Crystal Report。右键点击“公式字段 (Formula Fields)”,并从上下文菜单中选择“新建... (New...)”。在名称输入框中输入 "qrcode1",然后点击“使用编辑器 (Use Editor)”。

qrcode create formula in crystal reports

3. 经过二维码编码后,即使是很短的字符串,返回的代码字(codewords)也可能超出您的预期。然而,Crystal Reports 不允许在单个公式字段中超过 254 个字符。因此,在应用 BcsQRCode 字体之前,我们必须将 QR Code 代码字分成不同的部分,并将它们连接在一个“文本对象 (Text Object)”中。要了解需要多少个公式字段,请使用以下函数:

BCSQRCodeFormulaNoForCR({Data.Code})

qrcode crystal reports UFL

4. 如果返回的代码字多于 255 个字符,请按如下所示创建多个公式字段。然后将它们按顺序拖放到同一个文本对象中。

qrcode create formula crystal reports

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 用户,请设置以下公式:

str = "BCD" & "&#0a;" & "001" & "&#0a;" & "1" & "&#0a;" & "SCT" & "&#0a;" & "BFSW3E33BER" & "&#0a;" & "Collection folder" & "&#0a;" & "DE33100206000001194701 " & "&#0a;" & "EUR123.45"
BCSQRCodeEncodeCR(str, 1, 1 )
BCSQRCodeEncodeCR(str, 2, 1)
BCSQRCodeEncodeCR(str, 3, 1)

请在每个数据段落后添加 & "&#0a;"。这将会被解析为 ASCII 码 0A。

qrcode crystal reports UFL formula field

您会在报告中看到十六进制代码。别担心!这是因为您还没有应用 QR Code 条形码字体。

5. 右键点击文本对象,并从上下文菜单中选择“设置对象格式 (Format Object)”。然后选择 "BcsQRcode" 作为该文本对象的字体。

QRCode barcode font crystal reports

6. 点击确定按钮。您将会在报告中看到二维码显示出来。

QRCode barcode crystal reports

7. 如果您想在报告中使用 GS1 二维码,请使用 BCSQRCodeEncodeCRGS1 公式。

BCSQRCodeEncodeCRGS1(str, 1, 0);
BCSQRCodeEncodeCRGS1(str, 2, 0);
BCSQRCodeEncodeCRGS1(str, 3, 0);

第一个参数是 str。在被 cruflbcs.dll 编码为 GS1 二维码之前,您的数据必须符合这种格式:(17)190508(90)50921。请在每个应用标识符 (AI) 的前后加上圆括号。在需要时,系统会自动为您添加 FNC1 字符。
第二个参数是您的公式索引。
第三个是纠错级别。