Appearance
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);
}
注意事项
- 产品要求:PDF安全电子印章接口需要单独购买PDF电子印章产品才能调用
- 属性访问:确保在访问印章属性前,文档已正确加载
- 属性验证:验证印章属性值的有效性,避免设置无效值
- 错误处理:实现完善的错误处理机制
- 性能考虑:避免频繁访问印章属性
- 资源管理:及时清理不需要的资源
- 状态同步:保持印章状态的一致性
错误处理
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);
}
技术要点
- 产品要求:PDF安全电子印章接口需要单独购买PDF电子印章产品才能调用
- 属性访问:确保在访问印章属性前,文档已正确加载
- 属性验证:验证印章属性值的有效性,避免设置无效值
- 错误处理:完善的错误处理机制
- 性能优化:避免频繁访问印章属性
- 资源管理:及时清理不需要的资源
- 状态同步:保持印章状态的一致性