Skip to content

PDF安全电子印章通用接口

概述

本节介绍软航OFFICE文档控件PDF安全电子印章的通用接口,这些接口允许开发者控制PDF文档中电子印章的各种功能和行为,为PDF文档管理系统提供完整的电子印章控制能力。

注意: 6.5、6.6、6.7、6.8四节所介绍的PDF安全电子印章接口均需要单独购买PDF电子印章产品才能调用。

印章显示控制属性

IsAutoSignsGray

说明:
布尔型;可读写;设置印章在ntko以外的产品中是否显示为灰色。

语法:

javascript
// 设置
plugInObj.IsAutoSignsGray = {true|false};

// 读取
varObj = plugInObj.IsAutoSignsGray;

使用示例:

javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;

// 设置印章在其他产品中显示为灰色
plugInObj.IsAutoSignsGray = true;
console.log("印章在其他产品中显示为灰色");

// 读取印章显示状态
var isAutoSignsGray = plugInObj.IsAutoSignsGray;
console.log("印章在其他产品中显示状态:", isAutoSignsGray);

IsDefaultSignsGray

说明:
布尔型;可读写;设置印章文档控件中是否显示为灰色。

语法:

javascript
// 设置
plugInObj.IsDefaultSignsGray = {true|false};

// 读取
varObj = plugInObj.IsDefaultSignsGray;

使用示例:

javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;

// 设置印章在文档控件中显示为灰色
plugInObj.IsDefaultSignsGray = true;
console.log("印章在文档控件中显示为灰色");

// 读取印章显示状态
var isDefaultSignsGray = plugInObj.IsDefaultSignsGray;
console.log("印章在文档控件中显示状态:", isDefaultSignsGray);

IsSignsPrintGray

说明:
布尔型;可读写;设置印章在打印时是否灰色显示。可用于超出打印份数后强制灰色打印的应用。

语法:

javascript
// 设置
plugInObj.IsSignsPrintGray = {true|false};

// 读取
varObj = plugInObj.IsSignsPrintGray;

使用示例:

javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;

// 设置印章在打印时显示为灰色
plugInObj.IsSignsPrintGray = true;
console.log("印章在打印时显示为灰色");

// 读取印章打印状态
var isSignsPrintGray = plugInObj.IsSignsPrintGray;
console.log("印章在打印时显示状态:", isSignsPrintGray);

功能支持属性

IsSupportSecuritySign

说明:
布尔型;可读写;是否支持安全印章。

语法:

javascript
// 设置
plugInObj.IsSupportSecuritySign = {true|false};

// 读取
varObj = plugInObj.IsSupportSecuritySign;

使用示例:

javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;

// 设置支持安全印章
plugInObj.IsSupportSecuritySign = true;
console.log("安全印章支持已启用");

// 读取安全印章支持状态
var isSupportSecuritySign = plugInObj.IsSupportSecuritySign;
console.log("安全印章支持状态:", isSupportSecuritySign);

IsTimeStampSign

说明:
布尔型;可读写;是否使用时间戳盖章。

语法:

javascript
// 设置
plugInObj.IsTimeStampSign = {true|false};

// 读取
varObj = plugInObj.IsTimeStampSign;

使用示例:

javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;

// 设置使用时间戳盖章
plugInObj.IsTimeStampSign = true;
console.log("时间戳盖章已启用");

// 读取时间戳盖章状态
var isTimeStampSign = plugInObj.IsTimeStampSign;
console.log("时间戳盖章状态:", isTimeStampSign);

TimeStampAuthorURL

说明:
字符型;可读写;设置/读取时间戳服务器地址。

语法:

javascript
// 设置
plugInObj.TimeStampAuthorURL = URLSTR;

// 读取
varObj = plugInObj.TimeStampAuthorURL;

使用示例:

javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;

// 设置时间戳服务器地址
plugInObj.TimeStampAuthorURL = "http://192.168.0.224:1986/ntkoSignServer/";
console.log("时间戳服务器地址已设置");

// 读取时间戳服务器地址
var timeStampUrl = plugInObj.TimeStampAuthorURL;
console.log("时间戳服务器地址:", timeStampUrl);

印章管理方法

GetSign

语法:

javascript
GetSign(Index)

功能:
根据序列号获取电子印章对象。

参数:

名称必选/可选数据类型说明
Index必选long印章序号

返回值:
PDF电子印章对象

说明:
根据序列号获取电子印章对象。关于电子印章对象的详细内容,请见PDF安全电子印章对象接口。

使用示例:

javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;

// 获取第一个印章对象
var pdfSignObj = plugInObj.GetSign(1);
console.log("印章对象获取成功:", pdfSignObj);

// 获取印章信息
if (pdfSignObj) {
    var signerName = pdfSignObj.SignerName;
    var signTime = pdfSignObj.SignTime;
    console.log("印章信息:", { signerName, signTime });
}

GetSignsCount

语法:

javascript
GetSignsCount()

功能:
获取印章数量。

返回值:
数值型

说明:
获取印章数量。

使用示例:

javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;

// 获取印章数量
var count = plugInObj.GetSignsCount();
console.log("文档中印章数量:", count);

// 遍历所有印章
for (var i = 1; i <= count; i++) {
    var pdfSignObj = plugInObj.GetSign(i);
    if (pdfSignObj) {
        console.log("印章" + i + ":", pdfSignObj.SignerName);
    }
}

SetAllSignsTuomi

语法:

javascript
SetAllSignsTuomi()

功能:
设置PDF文档中所有印章脱密。

返回值:
无返回值

说明:
设置PDF文档中所有印章脱密。

使用示例:

javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;

// 设置所有印章脱密
plugInObj.SetAllSignsTuomi();
console.log("所有印章已设置为脱密状态");

RemoveAllsigns

语法:

javascript
RemoveAllsigns()

功能:
移除PDF文档中所有印章。

返回值:
无返回值

说明:
移除PDF文档中所有印章。

使用示例:

javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;

// 移除所有印章
plugInObj.RemoveAllsigns();
console.log("所有印章已移除");

印章管理示例

1. 基本印章管理

javascript
// 基本印章管理示例
function basicSignManagement() {
    var plugInObj = OfficeControlObj.ActiveDocument;
    
    // 获取印章信息
    function getSignInfo() {
        var count = plugInObj.GetSignsCount();
        console.log("文档中印章数量:", count);
        
        for (var i = 1; i <= count; i++) {
            var pdfSignObj = plugInObj.GetSign(i);
            if (pdfSignObj) {
                console.log("印章" + i + "信息:");
                console.log("签章人:", pdfSignObj.SignerName);
                console.log("签章时间:", pdfSignObj.SignTime);
                console.log("印章类型:", pdfSignObj.SignType);
            }
        }
    }
    
    // 设置印章显示
    function setSignDisplay() {
        // 设置印章在文档控件中显示为灰色
        plugInObj.IsDefaultSignsGray = true;
        
        // 设置印章在打印时显示为灰色
        plugInObj.IsSignsPrintGray = true;
        
        console.log("印章显示设置完成");
    }
    
    return {
        getSignInfo: getSignInfo,
        setSignDisplay: setSignDisplay
    };
}

2. 高级印章管理

javascript
// 高级印章管理示例
function advancedSignManagement() {
    var plugInObj = OfficeControlObj.ActiveDocument;
    
    // 印章管理配置
    var signManagementConfig = {
        enableSecuritySign: true,
        enableTimeStamp: true,
        enableGrayDisplay: true,
        enablePrintControl: true
    };
    
    // 应用印章管理配置
    function applySignManagementConfig() {
        try {
            // 设置安全印章支持
            if (signManagementConfig.enableSecuritySign) {
                plugInObj.IsSupportSecuritySign = true;
            }
            
            // 设置时间戳盖章
            if (signManagementConfig.enableTimeStamp) {
                plugInObj.IsTimeStampSign = true;
                plugInObj.TimeStampAuthorURL = "http://192.168.0.224:1986/ntkoSignServer/";
            }
            
            // 设置印章显示
            if (signManagementConfig.enableGrayDisplay) {
                plugInObj.IsDefaultSignsGray = true;
            }
            
            // 设置打印控制
            if (signManagementConfig.enablePrintControl) {
                plugInObj.IsSignsPrintGray = true;
            }
            
            console.log("印章管理配置应用成功");
        } catch (error) {
            console.error("印章管理配置应用失败:", error);
        }
    }
    
    // 监控印章状态
    function monitorSignStatus() {
        var status = {
            signsCount: plugInObj.GetSignsCount(),
            isSupportSecuritySign: plugInObj.IsSupportSecuritySign,
            isTimeStampSign: plugInObj.IsTimeStampSign
        };
        
        console.log("印章状态监控:", status);
        return status;
    }
    
    return {
        applySignManagementConfig: applySignManagementConfig,
        monitorSignStatus: monitorSignStatus
    };
}

3. 印章质量控制

javascript
// 印章质量控制示例
function signQualityControl() {
    var plugInObj = OfficeControlObj.ActiveDocument;
    
    // 印章质量控制
    function controlSignQuality() {
        var signQuality = {
            totalSigns: 0,
            validSigns: 0,
            invalidSigns: 0,
            qualityScore: 0
        };
        
        // 获取印章数量
        signQuality.totalSigns = plugInObj.GetSignsCount();
        
        // 检查印章有效性
        for (var i = 1; i <= signQuality.totalSigns; i++) {
            var pdfSignObj = plugInObj.GetSign(i);
            if (pdfSignObj && pdfSignObj.SignerName) {
                signQuality.validSigns++;
            } else {
                signQuality.invalidSigns++;
            }
        }
        
        // 计算质量分数
        if (signQuality.totalSigns > 0) {
            signQuality.qualityScore = (signQuality.validSigns / signQuality.totalSigns) * 100;
        }
        
        console.log("印章质量控制:", signQuality);
        return signQuality;
    }
    
    // 执行质量控制
    var qualityResult = controlSignQuality();
    console.log("印章质量控制结果:", qualityResult);
}

属性分类总结

分类属性类型功能说明
显示控制IsAutoSignsGray可读写其他产品中显示印章在其他产品中是否显示为灰色
显示控制IsDefaultSignsGray可读写文档控件中显示印章在文档控件中是否显示为灰色
显示控制IsSignsPrintGray可读写打印时显示印章在打印时是否显示为灰色
功能支持IsSupportSecuritySign可读写安全印章支持是否支持安全印章
功能支持IsTimeStampSign可读写时间戳盖章是否使用时间戳盖章
功能支持TimeStampAuthorURL可读写时间戳服务器时间戳服务器地址
印章管理GetSign方法获取印章对象根据序号获取印章对象
印章管理GetSignsCount方法获取印章数量获取文档中印章数量
印章管理SetAllSignsTuomi方法设置脱密设置所有印章脱密
印章管理RemoveAllsigns方法移除印章移除所有印章

使用流程

1. 基本印章管理流程

javascript
// 基本印章管理流程
function basicSignManagementFlow() {
    var plugInObj = OfficeControlObj.ActiveDocument;
    
    // 设置印章显示
    function setSignDisplay() {
        plugInObj.IsDefaultSignsGray = true;
        plugInObj.IsSignsPrintGray = true;
        console.log("印章显示设置完成");
    }
    
    // 获取印章信息
    function getSignInfo() {
        var count = plugInObj.GetSignsCount();
        console.log("印章数量:", count);
        
        for (var i = 1; i <= count; i++) {
            var pdfSignObj = plugInObj.GetSign(i);
            if (pdfSignObj) {
                console.log("印章" + i + ":", pdfSignObj.SignerName);
            }
        }
    }
    
    return {
        setSignDisplay: setSignDisplay,
        getSignInfo: getSignInfo
    };
}

2. 高级印章管理流程

javascript
// 高级印章管理流程
function advancedSignManagementFlow() {
    var plugInObj = OfficeControlObj.ActiveDocument;
    
    // 印章管理配置
    var signConfig = {
        enableSecuritySign: true,
        enableTimeStamp: true,
        enableGrayDisplay: true
    };
    
    // 应用印章配置
    function applySignConfig() {
        if (signConfig.enableSecuritySign) {
            plugInObj.IsSupportSecuritySign = true;
        }
        
        if (signConfig.enableTimeStamp) {
            plugInObj.IsTimeStampSign = true;
            plugInObj.TimeStampAuthorURL = "http://192.168.0.224:1986/ntkoSignServer/";
        }
        
        if (signConfig.enableGrayDisplay) {
            plugInObj.IsDefaultSignsGray = true;
        }
        
        console.log("印章配置应用完成");
    }
    
    // 监控印章状态
    function monitorSignStatus() {
        var status = {
            signsCount: plugInObj.GetSignsCount(),
            isSupportSecuritySign: plugInObj.IsSupportSecuritySign,
            isTimeStampSign: plugInObj.IsTimeStampSign
        };
        
        console.log("印章状态:", status);
        return status;
    }
    
    return {
        applySignConfig: applySignConfig,
        monitorSignStatus: monitorSignStatus
    };
}

3. 印章质量控制流程

javascript
// 印章质量控制流程
function signQualityControlFlow() {
    var plugInObj = OfficeControlObj.ActiveDocument;
    
    // 印章质量控制
    function controlSignQuality() {
        var signQuality = {
            totalSigns: 0,
            validSigns: 0,
            invalidSigns: 0,
            qualityScore: 0
        };
        
        signQuality.totalSigns = plugInObj.GetSignsCount();
        
        for (var i = 1; i <= signQuality.totalSigns; i++) {
            var pdfSignObj = plugInObj.GetSign(i);
            if (pdfSignObj && pdfSignObj.SignerName) {
                signQuality.validSigns++;
            } else {
                signQuality.invalidSigns++;
            }
        }
        
        if (signQuality.totalSigns > 0) {
            signQuality.qualityScore = (signQuality.validSigns / signQuality.totalSigns) * 100;
        }
        
        console.log("印章质量控制:", signQuality);
        return signQuality;
    }
    
    // 执行质量控制
    var qualityResult = controlSignQuality();
    console.log("印章质量控制结果:", qualityResult);
}

完整示例

1. 基础印章管理

javascript
// 基础印章管理示例
function basicSignManagement() {
    var plugInObj = OfficeControlObj.ActiveDocument;
    
    // 设置印章显示
    function setSignDisplay() {
        plugInObj.IsDefaultSignsGray = true;
        plugInObj.IsSignsPrintGray = true;
        console.log("印章显示设置完成");
    }
    
    // 获取印章信息
    function getSignInfo() {
        var count = plugInObj.GetSignsCount();
        console.log("印章数量:", count);
        
        for (var i = 1; i <= count; i++) {
            var pdfSignObj = plugInObj.GetSign(i);
            if (pdfSignObj) {
                console.log("印章" + i + ":", pdfSignObj.SignerName);
            }
        }
    }
    
    return {
        setSignDisplay: setSignDisplay,
        getSignInfo: getSignInfo
    };
}

2. 高级印章管理

javascript
// 高级印章管理示例
function advancedSignManagement() {
    var plugInObj = OfficeControlObj.ActiveDocument;
    
    // 印章管理配置
    var signConfig = {
        enableSecuritySign: true,
        enableTimeStamp: true,
        enableGrayDisplay: true
    };
    
    // 应用印章配置
    function applySignConfig() {
        if (signConfig.enableSecuritySign) {
            plugInObj.IsSupportSecuritySign = true;
        }
        
        if (signConfig.enableTimeStamp) {
            plugInObj.IsTimeStampSign = true;
            plugInObj.TimeStampAuthorURL = "http://192.168.0.224:1986/ntkoSignServer/";
        }
        
        if (signConfig.enableGrayDisplay) {
            plugInObj.IsDefaultSignsGray = true;
        }
        
        console.log("印章配置应用完成");
    }
    
    // 监控印章状态
    function monitorSignStatus() {
        var status = {
            signsCount: plugInObj.GetSignsCount(),
            isSupportSecuritySign: plugInObj.IsSupportSecuritySign,
            isTimeStampSign: plugInObj.IsTimeStampSign
        };
        
        console.log("印章状态:", status);
        return status;
    }
    
    return {
        applySignConfig: applySignConfig,
        monitorSignStatus: monitorSignStatus
    };
}

3. 印章质量控制

javascript
// 印章质量控制示例
function signQualityControl() {
    var plugInObj = OfficeControlObj.ActiveDocument;
    
    // 印章质量控制
    function controlSignQuality() {
        var signQuality = {
            totalSigns: 0,
            validSigns: 0,
            invalidSigns: 0,
            qualityScore: 0
        };
        
        signQuality.totalSigns = plugInObj.GetSignsCount();
        
        for (var i = 1; i <= signQuality.totalSigns; i++) {
            var pdfSignObj = plugInObj.GetSign(i);
            if (pdfSignObj && pdfSignObj.SignerName) {
                signQuality.validSigns++;
            } else {
                signQuality.invalidSigns++;
            }
        }
        
        if (signQuality.totalSigns > 0) {
            signQuality.qualityScore = (signQuality.validSigns / signQuality.totalSigns) * 100;
        }
        
        console.log("印章质量控制:", signQuality);
        return signQuality;
    }
    
    // 执行质量控制
    var qualityResult = controlSignQuality();
    console.log("印章质量控制结果:", qualityResult);
}

注意事项

  1. 产品要求:PDF安全电子印章接口需要单独购买PDF电子印章产品才能调用
  2. 属性访问:确保在访问印章属性前,文档已正确加载
  3. 属性验证:验证印章属性值的有效性,避免设置无效值
  4. 错误处理:实现完善的错误处理机制
  5. 性能考虑:避免频繁访问印章属性
  6. 资源管理:及时清理不需要的资源
  7. 状态同步:保持印章状态的一致性

错误处理

javascript
// 印章管理错误处理
function handleSignManagementError(propertyType, error) {
    console.error("印章管理处理失败:", propertyType, error.message);
    
    switch(propertyType) {
        case 'IsAutoSignsGray':
            console.log("印章显示属性失败,请检查:");
            console.log("1. 文档是否已加载");
            console.log("2. 印章是否存在");
            console.log("3. 属性设置是否正确");
            break;
        case 'GetSign':
            console.log("获取印章对象失败,请检查:");
            console.log("1. 印章序号是否正确");
            console.log("2. 印章是否存在");
            console.log("3. 文档状态是否正常");
            break;
        case 'GetSignsCount':
            console.log("获取印章数量失败,请检查:");
            console.log("1. 文档是否已加载");
            console.log("2. 文档状态是否正常");
            console.log("3. 印章系统是否正常");
            break;
        default:
            console.log("未知印章管理处理失败");
    }
}

最佳实践

1. 印章管理最佳实践

javascript
// 印章管理最佳实践
function signManagementBestPractice() {
    // 印章管理配置
    var signManagementConfig = {
        enableLogging: true,
        enableValidation: true,
        enableErrorHandling: true,
        enableQualityControl: true
    };
    
    // 应用印章管理配置
    function applySignManagementConfig() {
        try {
            // 设置印章管理处理
            if (signManagementConfig.enableLogging) {
                console.log("印章管理日志已启用");
            }
            
            if (signManagementConfig.enableValidation) {
                console.log("印章验证已启用");
            }
            
            console.log("印章管理配置应用成功");
        } catch (error) {
            handleSignManagementError('applySignManagementConfig', error);
        }
    }
    
    // 应用配置
    applySignManagementConfig();
}

2. 印章质量控制最佳实践

javascript
// 印章质量控制最佳实践
function signQualityControlBestPractice() {
    // 印章质量控制
    function controlSignQuality() {
        try {
            // 印章质量控制
            var signQuality = {
                totalSigns: 0,
                validSigns: 0,
                invalidSigns: 0,
                qualityScore: 0
            };
            
            // 计算质量分数
            if (signQuality.totalSigns > 0) {
                signQuality.qualityScore = (signQuality.validSigns / signQuality.totalSigns) * 100;
            }
            
            console.log("印章质量控制完成:", signQuality);
            return signQuality;
        } catch (error) {
            console.error("印章质量控制失败:", error.message);
            return null;
        }
    }
    
    // 执行质量控制
    var qualityResult = controlSignQuality();
    console.log("印章质量控制结果:", qualityResult);
}

技术要点

  1. 产品要求:PDF安全电子印章接口需要单独购买PDF电子印章产品才能调用
  2. 属性访问:确保在访问印章属性前,文档已正确加载
  3. 属性验证:验证印章属性值的有效性,避免设置无效值
  4. 错误处理:完善的错误处理机制
  5. 性能优化:避免频繁访问印章属性
  6. 资源管理:及时清理不需要的资源
  7. 状态同步:保持印章状态的一致性