Appearance
文档控件添加一维码二维码方法
添加一维码或二维码图片
Add2DCodePic
语法:
javascript
Add2DCodePic(BarCodeType, StringData, IsFloat, left, top, relative, Scale, zorder, bIsTransBackground, [GBCodebDefaultSet])功能:
添加一维码或二维码图片。
参数:
| 名称 | 必选/可选 | 数据类型 | 说明 |
|---|---|---|---|
| BarCodeType | 必选 | long | 条码类型 |
| StringData | 必选 | string | 条码编码字符串 |
| IsFloat | 必选 | bool | 是否浮动,默认true浮动 |
| left | 必选 | long | 图片的x点 |
| top | 必选 | long | 图片的y点 |
| relative | 必选 | long | 图片定位的相对位置 |
| Scale | 必选 | long | 二维码图片的缩放比例 |
| zorder | 必选 | long | 图片相对文字位置 |
| bIsTransBackground | 必选 | bool | 白色背景是否透明,默认false |
| GBCodebDefaultSet | 可选 | string | 国标PDF417码信息字符串 |
返回值:
无返回值
说明:
平台版提供,添加一维码或二维码图片。
参数说明:
BarCodeType:通过传入1-5来指定要生成的条码的类型StringData:该参数传入需要编码的字符串,长度不能超过200IsFloat:是否浮动,默认true浮动left:图片的x点top:图片的y点relative:图片定位的相对位置Scale:二维码图片的缩放比例zorder:图片相对文字位置bIsTransBackground:白色背景是否透明,默认falseGBCodebDefaultSet:只在类型为PDF417条码的时候起作用
条码类型说明
BarCodeType参数取值
| 条码类型 | 参数值 | 说明 | 字符集要求 |
|---|---|---|---|
| PDF417 | 1 | 二维码 | 无特别要求 |
| QRCode | 2 | 二维码 | 无特别要求 |
| Code128 | 3 | 一维码 | 英文和数字 |
| Code39 | 4 | 一维码 | 英文和数字 |
| EAN13 | 5 | 一维码 | 13位数字 |
注意: 其中1-2是二维码,3-5为一维码。公文国标二维码为PDF417即需要参数设置为1。
字符集要求
- PDF417和QRCode:对编码的字符集范围没有特别的要求
- Code128和Code39:只能支持英文和数字
- EAN13:只能支持13位数字
国标PDF417码信息字符串
GBCodebDefaultSet参数说明
只在类型为PDF417条码的时候起作用。需要设置国标二维码对话框中的输入域的初始默认值的字符串时使用。字符串格式要求为由'&'分割项,'='分割键值的字符串如:"Key1=Value1&Key2=Value2..."。
支持的键值
| 键值 | 含义 |
|---|---|
| barCodeVer | 条码版本 |
| barCodeSN | 条码编号 |
| barCodeDept | 发文单位 |
| barCodeArtCata | 文种,刊名 |
| barCodeArtSN | 发文字号和期号 |
| barCodeMainDept | 主送单位 |
| barCodeTitle | 文件标题 |
| barCodeDatelimit | 保密期限 |
| barCodeSecLevel | 秘密等级 |
| barCodeUrgenType | 紧急程度类型 |
| barCodeUrgenLevel | 紧急程度 |
| ArtDate | 成文日期 |
| dispLevel | 发布层次 |
| UserDate | 自定义数据 |
| barcodeGenDept | 条码制作单位 |
| barcodeDate | 条码制作日期 |
使用示例
1. PDF417二维码示例
javascript
// PDF417的Javascript示例
function add2DPDF417code() {
var ocx = document.getElementById("文档控件ID");
var data = "GB0626-2005^00000000^主办单位^通知^无^相关部门^文件标题^无^无^20111020^公开发布^软航软件^20111020^自定义^|";
ocx.Add2DCodePic(1, data, true, 20, 20, 1, 100, 1, true);
}2. 国标二维码示例
javascript
// 国标二维码的javascript的示例
function add2DGBcode() {
var ocx = document.getElementById("文档控件ID");
var data = "";
ocx.Add2DCodePic(1, data, true, 20, 20, 1, 100, 1, true);
}3. 有默认值的国标二维码示例
javascript
// 有默认值的国标二维码javascript示例
function add2DGBcodeDefault() {
var ocx = document.getElementById("文档控件ID");
var data = "";
ocx.Add2DCodePic(1, data, true, 20, 20, 1, 100, 1, true, "barCodeVer=19900101&barCodeUrgenType=公文&barCodeUrgenLevel=紧急");
}4. QRCode二维码示例
javascript
// QRCode二维码javascript示例
function add2DQRcode() {
var ocx = document.getElementById("文档控件ID");
var data = "GB0626-2005^00000000^主办单位^通知^无^相关部门^文件标题^无^无^20111020^公开发布^软航软件^20111020^自定义^|";
ocx.Add2DCodePic(2, data, true, 20, 20, 1, 100, 1, true);
}5. Code128一维码示例
javascript
// Code128的javascript示例
function AddCode128() {
var ocx = document.getElementById("文档控件ID");
var data = "ABCDEFG123456789";
ocx.Add2DCodePic(3, data, true, 20, 20, 1, 100, 1, true);
}6. Code39一维码示例
javascript
// Code39的javascript示例
function AddCode39() {
var ocx = document.getElementById("文档控件ID");
var data = "1234321";
ocx.Add2DCodePic(4, data, true, 20, 20, 1, 100, 1, true);
}7. EAN13一维码示例
javascript
// EAN13的javascript示例
function EAN13() {
var ocx = document.getElementById("文档控件ID");
var data = "7501031311309";
ocx.Add2DCodePic(5, data, true, 20, 20, 1, 100, 1, true);
}方法分类总结
| 分类 | 方法 | 功能 | 说明 |
|---|---|---|---|
| 二维码 | Add2DCodePic | 添加二维码图片 | 支持PDF417和QRCode |
| 一维码 | Add2DCodePic | 添加一维码图片 | 支持Code128、Code39、EAN13 |
| 国标码 | Add2DCodePic | 添加国标二维码 | 支持国标PDF417码 |
使用流程
1. 添加二维码
javascript
// 添加二维码
function addQRCode() {
try {
var ocx = document.getElementById("文档控件ID");
// 添加QRCode二维码
ocx.Add2DCodePic(2, "https://www.example.com", true, 100, 100, 1, 100, 1, true);
console.log("二维码添加完成");
} catch (error) {
console.error("添加二维码失败:", error.message);
}
}2. 添加一维码
javascript
// 添加一维码
function addBarcode() {
try {
var ocx = document.getElementById("文档控件ID");
// 添加Code128一维码
ocx.Add2DCodePic(3, "123456789", true, 100, 100, 1, 100, 1, true);
console.log("一维码添加完成");
} catch (error) {
console.error("添加一维码失败:", error.message);
}
}3. 添加国标二维码
javascript
// 添加国标二维码
function addGBQRCode() {
try {
var ocx = document.getElementById("文档控件ID");
// 添加国标PDF417二维码
ocx.Add2DCodePic(1, "", true, 100, 100, 1, 100, 1, true);
console.log("国标二维码添加完成");
} catch (error) {
console.error("添加国标二维码失败:", error.message);
}
}完整示例
1. 基础二维码添加
javascript
// 基础二维码添加示例
function addBasicQRCode() {
try {
var ocx = document.getElementById("文档控件ID");
// 添加QRCode二维码
ocx.Add2DCodePic(2, "Hello World", true, 50, 50, 1, 100, 1, true);
// 添加PDF417二维码
ocx.Add2DCodePic(1, "PDF417 Data", true, 50, 150, 1, 100, 1, true);
console.log("基础二维码添加完成");
} catch (error) {
console.error("基础二维码添加失败:", error.message);
}
}2. 高级一维码管理
javascript
// 高级一维码管理示例
function addAdvancedBarcode() {
try {
var ocx = document.getElementById("文档控件ID");
// 添加Code128一维码
ocx.Add2DCodePic(3, "CODE128", true, 50, 50, 1, 100, 1, true);
// 添加Code39一维码
ocx.Add2DCodePic(4, "123456", true, 50, 100, 1, 100, 1, true);
// 添加EAN13一维码
ocx.Add2DCodePic(5, "7501031311309", true, 50, 150, 1, 100, 1, true);
console.log("高级一维码管理完成");
} catch (error) {
console.error("高级一维码管理失败:", error.message);
}
}3. 国标二维码管理
javascript
// 国标二维码管理示例
function addGBQRCodeManagement() {
try {
var ocx = document.getElementById("文档控件ID");
// 添加国标二维码(无默认值)
ocx.Add2DCodePic(1, "", true, 50, 50, 1, 100, 1, true);
// 添加国标二维码(有默认值)
ocx.Add2DCodePic(1, "", true, 50, 150, 1, 100, 1, true,
"barCodeVer=19900101&barCodeUrgenType=公文&barCodeUrgenLevel=紧急");
console.log("国标二维码管理完成");
} catch (error) {
console.error("国标二维码管理失败:", error.message);
}
}条码定位和缩放
1. 条码定位控制
javascript
// 条码定位控制示例
function addPositionedBarcode() {
try {
var ocx = document.getElementById("文档控件ID");
// 添加定位条码
ocx.Add2DCodePic(2, "Positioned QR", true, 200, 100, 2, 100, 1, true);
// 添加缩放条码
ocx.Add2DCodePic(2, "Scaled QR", true, 200, 200, 1, 50, 1, true);
console.log("条码定位控制完成");
} catch (error) {
console.error("条码定位控制失败:", error.message);
}
}2. 条码透明度控制
javascript
// 条码透明度控制示例
function addTransparentBarcode() {
try {
var ocx = document.getElementById("文档控件ID");
// 添加透明背景条码
ocx.Add2DCodePic(2, "Transparent QR", true, 100, 100, 1, 100, 1, true);
// 添加不透明背景条码
ocx.Add2DCodePic(2, "Opaque QR", true, 100, 200, 1, 100, 1, false);
console.log("条码透明度控制完成");
} catch (error) {
console.error("条码透明度控制失败:", error.message);
}
}注意事项
- 版本要求:此方法是平台版提供
- 条码类型:正确选择条码类型(1-5)
- 字符集要求:一维码有字符集限制
- 字符串长度:编码字符串长度不能超过200
- 国标码:PDF417国标码需要特殊格式
- 定位参数:合理设置条码定位参数
- 缩放控制:合理设置条码缩放比例
错误处理
javascript
// 条码操作错误处理
function handleBarcodeError(operation, error) {
console.error("条码操作失败:", operation, error.message);
switch(operation) {
case 'Add2DCodePic':
console.log("添加条码失败,请检查:");
console.log("1. 条码类型是否正确(1-5)");
console.log("2. 编码字符串是否符合要求");
console.log("3. 字符集是否支持");
console.log("4. 字符串长度是否超过200");
break;
default:
console.log("未知条码操作失败");
}
}最佳实践
1. 条码添加最佳实践
javascript
// 条码添加最佳实践
function barcodeAddBestPractice() {
try {
// 检查文档状态
if (OCX_OBJ.DocType === 0) {
console.log("请先打开文档");
return;
}
// 添加条码
function addBarcodeWithErrorHandling() {
try {
OCX_OBJ.Add2DCodePic(2, "Best Practice QR", true, 100, 100, 1, 100, 1, true);
console.log("条码添加成功");
} catch (error) {
handleBarcodeError('Add2DCodePic', error);
}
}
// 执行条码添加
addBarcodeWithErrorHandling();
} catch (error) {
console.error("条码添加最佳实践失败:", error.message);
}
}2. 条码管理最佳实践
javascript
// 条码管理最佳实践
function barcodeManagementBestPractice() {
try {
// 条码添加配置
var barcodeConfig = {
defaultScale: 100,
defaultZorder: 1,
defaultRelative: 1,
defaultIsFloat: true,
defaultTransBackground: true
};
// 添加配置化条码
function addConfiguredBarcode(type, data, options) {
try {
var config = Object.assign({
scale: barcodeConfig.defaultScale,
zorder: barcodeConfig.defaultZorder,
relative: barcodeConfig.defaultRelative,
isFloat: barcodeConfig.defaultIsFloat,
transBackground: barcodeConfig.defaultTransBackground,
left: 100,
top: 100
}, options);
OCX_OBJ.Add2DCodePic(
type,
data,
config.isFloat,
config.left,
config.top,
config.relative,
config.scale,
config.zorder,
config.transBackground
);
console.log("配置化条码添加成功:", data);
} catch (error) {
console.error("配置化条码添加失败:", data, error.message);
}
}
// 使用配置化方法添加条码
addConfiguredBarcode(2, 'QR Code', { scale: 80 });
addConfiguredBarcode(3, 'CODE128', { scale: 120, zorder: 0 });
console.log("条码管理最佳实践完成");
} catch (error) {
console.error("条码管理最佳实践失败:", error.message);
}
}3. 条码质量控制最佳实践
javascript
// 条码质量控制最佳实践
function barcodeQualityBestPractice() {
try {
// 条码质量检查
function checkBarcodeQuality(type, data) {
// 检查条码类型
if (type < 1 || type > 5) {
console.log("条码类型必须在1-5范围内");
return false;
}
// 检查数据长度
if (data.length > 200) {
console.log("编码字符串长度不能超过200");
return false;
}
// 检查字符集
if (type === 3 || type === 4) { // Code128, Code39
if (!/^[A-Za-z0-9]+$/.test(data)) {
console.log("Code128和Code39只能支持英文和数字");
return false;
}
} else if (type === 5) { // EAN13
if (!/^\d{13}$/.test(data)) {
console.log("EAN13只能支持13位数字");
return false;
}
}
return true;
}
// 添加质量检查的条码
function addQualityCheckedBarcode(type, data, options) {
if (checkBarcodeQuality(type, data)) {
try {
OCX_OBJ.Add2DCodePic(
type,
data,
options.isFloat || true,
options.left || 100,
options.top || 100,
options.relative || 1,
options.scale || 100,
options.zorder || 1,
options.transBackground || true
);
console.log("质量检查通过,条码添加成功");
} catch (error) {
console.error("条码添加失败:", error.message);
}
}
}
// 使用质量检查添加条码
addQualityCheckedBarcode(2, "Quality QR Code", {
scale: 80,
zorder: 1
});
console.log("条码质量控制最佳实践完成");
} catch (error) {
console.error("条码质量控制最佳实践失败:", error.message);
}
}技术要点
- 版本兼容性:确保使用平台版
- 条码类型选择:正确选择条码类型
- 字符集管理:正确处理不同条码的字符集要求
- 国标码支持:正确配置国标PDF417码
- 定位控制:合理设置条码定位参数
- 缩放控制:合理设置条码缩放比例
- 错误处理:完善的错误处理机制
总结
文档控件添加一维码二维码方法为软航OFFICE文档控件提供了强大的条码管理能力。通过Add2DCodePic方法可以添加各种类型的条码,包括PDF417、QRCode二维码和Code128、Code39、EAN13一维码,支持国标PDF417码,为开发者提供了灵活的条码管理功能,大大提升了控件的条码处理能力和用户体验。