Skip to content

文档控件添加一维码二维码方法

添加一维码或二维码图片

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:该参数传入需要编码的字符串,长度不能超过200
  • IsFloat:是否浮动,默认true浮动
  • left:图片的x点
  • top:图片的y点
  • relative:图片定位的相对位置
  • Scale:二维码图片的缩放比例
  • zorder:图片相对文字位置
  • bIsTransBackground:白色背景是否透明,默认false
  • GBCodebDefaultSet:只在类型为PDF417条码的时候起作用

条码类型说明

BarCodeType参数取值

条码类型参数值说明字符集要求
PDF4171二维码无特别要求
QRCode2二维码无特别要求
Code1283一维码英文和数字
Code394一维码英文和数字
EAN135一维码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. 版本要求:此方法是平台版提供
  2. 条码类型:正确选择条码类型(1-5)
  3. 字符集要求:一维码有字符集限制
  4. 字符串长度:编码字符串长度不能超过200
  5. 国标码:PDF417国标码需要特殊格式
  6. 定位参数:合理设置条码定位参数
  7. 缩放控制:合理设置条码缩放比例

错误处理

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);
    }
}

技术要点

  1. 版本兼容性:确保使用平台版
  2. 条码类型选择:正确选择条码类型
  3. 字符集管理:正确处理不同条码的字符集要求
  4. 国标码支持:正确配置国标PDF417码
  5. 定位控制:合理设置条码定位参数
  6. 缩放控制:合理设置条码缩放比例
  7. 错误处理:完善的错误处理机制

总结

文档控件添加一维码二维码方法为软航OFFICE文档控件提供了强大的条码管理能力。通过Add2DCodePic方法可以添加各种类型的条码,包括PDF417、QRCode二维码和Code128、Code39、EAN13一维码,支持国标PDF417码,为开发者提供了灵活的条码管理功能,大大提升了控件的条码处理能力和用户体验。