Appearance
文档控件增加对插件的支持接口
AddDocTypePlugin
语法:
javascript
AddDocTypePlugin(FileExt, ProgID, Version, URL, iDocType, [vbAutoDown])
功能:
增加文档控件对PDF、TIF、TIFF文档类型的支持。
参数:
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
FileExt | 必选 | string | 扩展名 |
ProgID | 必选 | string | ProgID |
Version | 必选 | string | 插件版本号 |
URL | 必选 | string | 插件cab包URL地址 |
iDocType | 必选 | long | 文档类型标识 |
vbAutoDown | 可选 | bool | 是否自动下载插件 |
返回值:
无返回值
说明:
平台版以上提供,该函数告知文档控件,增加对PDF、TIF、TIFF文档类型的支持。
参数详细说明:
- FileExt(扩展名):值为
.pdf
、.tif
、.tiff
- ProgID:PDF类型值为
PDF.NtkoDocument
,TIF、TIFF类型值为TIF.NtkoDocument
- Version(插件版本号):指定插件的版本号,如
4.0.0.0
- URL(插件cab包URL地址):插件相对当前网页的URL,注意DLL文件的URL地址不能出错
- iDocType(文档类型标识):PDF类型值为
51
,TIF、TIFF类型值为52
- vbAutoDown(是否自动下载插件):当设定为自动下载时,会比较当前客户机安装的版本,如果比第3个参数指定的版本低,或者客户机没有安装,会自动下载并注册插件
使用示例
基本用法
javascript
function init() {
// 此代码放在body标签onload事件中
TANGER_OCX_OBJ = document.getElementById("TANGER_OCX");
// 添加PDF文档类型支持
TANGER_OCX_OBJ.AddDocTypePlugin(".pdf", "PDF.NtkoDocument", "4.0.0.0", "./NTKOOleDocAll.cab", 51, true);
// 添加TIF文档类型支持
TANGER_OCX_OBJ.AddDocTypePlugin(".tif", "TIF.NtkoDocument", "4.0.0.0", "./NTKOOleDocAll.cab", 52);
// 添加TIFF文档类型支持
TANGER_OCX_OBJ.AddDocTypePlugin(".tiff", "TIF.NtkoDocument", "4.0.0.0", "/NTKOOleDocAll.cab", 52);
// 打开PDF文档
TANGER_OCX_OBJ.BeginOpenFromURL("SKEJ86156.pdf");
}
完整初始化示例
javascript
// 页面加载完成后初始化
function initializeDocumentControl() {
try {
// 获取控件对象
var controlObj = document.getElementById("TANGER_OCX");
if (!controlObj) {
console.error("文档控件未找到");
return false;
}
// 配置PDF支持
controlObj.AddDocTypePlugin(
".pdf", // 扩展名
"PDF.NtkoDocument", // ProgID
"4.0.0.0", // 版本号
"./plugins/NTKOOleDocAll.cab", // 插件URL
51, // 文档类型标识
true // 自动下载
);
// 配置TIF支持
controlObj.AddDocTypePlugin(
".tif", // 扩展名
"TIF.NtkoDocument", // ProgID
"4.0.0.0", // 版本号
"./plugins/NTKOOleDocAll.cab", // 插件URL
52, // 文档类型标识
false // 不自动下载
);
// 配置TIFF支持
controlObj.AddDocTypePlugin(
".tiff", // 扩展名
"TIF.NtkoDocument", // ProgID
"4.0.0.0", // 版本号
"./plugins/NTKOOleDocAll.cab", // 插件URL
52, // 文档类型标识
false // 不自动下载
);
console.log("文档控件插件配置完成");
return true;
} catch (error) {
console.error("文档控件插件配置失败:", error.message);
return false;
}
}
动态配置插件
javascript
// 动态配置文档类型插件
function configureDocumentPlugins() {
var controlObj = document.getElementById("TANGER_OCX");
// 插件配置数组
var pluginConfigs = [
{
ext: ".pdf",
progId: "PDF.NtkoDocument",
version: "4.0.0.0",
url: "./plugins/NTKOOleDocAll.cab",
docType: 51,
autoDownload: true
},
{
ext: ".tif",
progId: "TIF.NtkoDocument",
version: "4.0.0.0",
url: "./plugins/NTKOOleDocAll.cab",
docType: 52,
autoDownload: false
},
{
ext: ".tiff",
progId: "TIF.NtkoDocument",
version: "4.0.0.0",
url: "./plugins/NTKOOleDocAll.cab",
docType: 52,
autoDownload: false
}
];
// 批量配置插件
pluginConfigs.forEach(function(config) {
try {
controlObj.AddDocTypePlugin(
config.ext,
config.progId,
config.version,
config.url,
config.docType,
config.autoDownload
);
console.log("插件配置成功:", config.ext);
} catch (error) {
console.error("插件配置失败:", config.ext, error.message);
}
});
}
条件配置插件
javascript
// 根据用户需求条件配置插件
function conditionalPluginSetup() {
var controlObj = document.getElementById("TANGER_OCX");
// 检查用户权限或需求
var userNeedsPDF = checkUserPermission("PDF");
var userNeedsTIF = checkUserPermission("TIF");
if (userNeedsPDF) {
// 配置PDF支持
controlObj.AddDocTypePlugin(
".pdf",
"PDF.NtkoDocument",
"4.0.0.0",
"./plugins/NTKOOleDocAll.cab",
51,
true
);
console.log("PDF插件已配置");
}
if (userNeedsTIF) {
// 配置TIF支持
controlObj.AddDocTypePlugin(
".tif",
"TIF.NtkoDocument",
"4.0.0.0",
"./plugins/NTKOOleDocAll.cab",
52,
true
);
// 配置TIFF支持
controlObj.AddDocTypePlugin(
".tiff",
"TIF.NtkoDocument",
"4.0.0.0",
"./plugins/NTKOOleDocAll.cab",
52,
true
);
console.log("TIF/TIFF插件已配置");
}
}
// 模拟权限检查函数
function checkUserPermission(type) {
// 这里实现实际的权限检查逻辑
return true; // 示例:总是返回true
}
文档类型对照表
文档类型 | 扩展名 | ProgID | 文档类型标识 | 说明 |
---|---|---|---|---|
PDF.NtkoDocument | 51 | PDF文档支持 | ||
TIF | .tif | TIF.NtkoDocument | 52 | TIF图像文档支持 |
TIFF | .tiff | TIF.NtkoDocument | 52 | TIFF图像文档支持 |
插件配置参数说明
FileExt(扩展名)
值 | 说明 | 示例 |
---|---|---|
PDF文档扩展名 | ".pdf" | |
.tif | TIF图像扩展名 | ".tif" |
.tiff | TIFF图像扩展名 | ".tiff" |
ProgID(程序标识符)
文档类型 | ProgID | 说明 |
---|---|---|
PDF.NtkoDocument | PDF文档处理程序 | |
TIF/TIFF | TIF.NtkoDocument | TIF/TIFF图像处理程序 |
iDocType(文档类型标识)
值 | 文档类型 | 说明 |
---|---|---|
51 | PDF文档类型标识 | |
52 | TIF/TIFF | TIF/TIFF图像文档类型标识 |
vbAutoDown(自动下载)
值 | 说明 | 行为 |
---|---|---|
true | 自动下载 | 比较版本,自动下载并注册插件 |
false | 手动下载 | 不自动下载,需要手动处理 |
使用流程
1. 插件初始化阶段
javascript
// 插件初始化
function initializePlugins() {
var controlObj = document.getElementById("TANGER_OCX");
// 配置PDF插件
controlObj.AddDocTypePlugin(
".pdf",
"PDF.NtkoDocument",
"4.0.0.0",
"./plugins/NTKOOleDocAll.cab",
51,
true
);
console.log("插件初始化完成");
}
2. 插件验证阶段
javascript
// 验证插件是否配置成功
function verifyPlugins() {
var controlObj = document.getElementById("TANGER_OCX");
try {
// 尝试打开PDF文档来验证插件
controlObj.BeginOpenFromURL("test.pdf");
console.log("PDF插件验证成功");
} catch (error) {
console.error("PDF插件验证失败:", error.message);
}
}
3. 插件使用阶段
javascript
// 使用插件打开文档
function openDocumentWithPlugin(documentUrl, documentType) {
var controlObj = document.getElementById("TANGER_OCX");
try {
switch(documentType) {
case 'pdf':
controlObj.BeginOpenFromURL(documentUrl);
break;
case 'tif':
case 'tiff':
controlObj.BeginOpenFromURL(documentUrl);
break;
default:
console.log("不支持的文档类型:", documentType);
}
} catch (error) {
console.error("打开文档失败:", error.message);
}
}
错误处理
javascript
// 插件配置错误处理
function handlePluginError(operation, error) {
console.error("插件操作失败:", operation, error.message);
switch(operation) {
case 'AddDocTypePlugin':
console.log("插件配置失败,请检查:");
console.log("1. 插件URL是否正确");
console.log("2. 插件版本是否匹配");
console.log("3. 网络连接是否正常");
break;
case 'BeginOpenFromURL':
console.log("文档打开失败,请检查:");
console.log("1. 插件是否正确安装");
console.log("2. 文档URL是否有效");
console.log("3. 文档格式是否支持");
break;
default:
console.log("未知插件操作失败");
}
}
最佳实践
1. 插件URL管理
javascript
// 插件URL配置管理
var PluginConfig = {
baseUrl: "./plugins/",
pdfPlugin: "NTKOOleDocAll.cab",
tifPlugin: "NTKOOleDocAll.cab",
version: "4.0.0.0"
};
// 获取完整插件URL
function getPluginUrl(pluginName) {
return PluginConfig.baseUrl + pluginName;
}
// 配置插件
function setupPlugins() {
var controlObj = document.getElementById("TANGER_OCX");
// PDF插件
controlObj.AddDocTypePlugin(
".pdf",
"PDF.NtkoDocument",
PluginConfig.version,
getPluginUrl(PluginConfig.pdfPlugin),
51,
true
);
// TIF插件
controlObj.AddDocTypePlugin(
".tif",
"TIF.NtkoDocument",
PluginConfig.version,
getPluginUrl(PluginConfig.tifPlugin),
52,
true
);
}
2. 版本管理
javascript
// 插件版本管理
var PluginVersions = {
pdf: "4.0.0.0",
tif: "4.0.0.0",
tiff: "4.0.0.0"
};
// 检查插件版本
function checkPluginVersion(pluginType) {
var version = PluginVersions[pluginType];
if (!version) {
console.error("未知的插件类型:", pluginType);
return false;
}
return version;
}
3. 错误恢复
javascript
// 插件错误恢复
function recoverFromPluginError() {
try {
// 重新配置插件
initializeDocumentControl();
// 验证插件状态
verifyPlugins();
console.log("插件错误恢复成功");
return true;
} catch (error) {
console.error("插件错误恢复失败:", error.message);
return false;
}
}
注意事项
- 版本要求:此功能仅平台版以上提供
- URL准确性:插件cab包URL地址必须准确,DLL文件URL不能出错
- 自动下载:设置自动下载时,会检查版本并自动更新插件
- 网络连接:插件下载需要网络连接
- 权限设置:插件安装可能需要管理员权限
- 兼容性:确保插件版本与控件版本兼容
- 错误处理:实现完善的错误处理机制
常见问题
Q1: 插件配置失败怎么办?
A: 检查以下几点:
- 插件URL是否正确
- 网络连接是否正常
- 插件版本是否匹配
- 控件版本是否支持
Q2: 自动下载不工作怎么办?
A: 检查以下几点:
- vbAutoDown参数是否设置为true
- 插件版本号是否正确
- 网络连接是否正常
- 浏览器安全设置是否允许下载
Q3: 文档打开失败怎么办?
A: 检查以下几点:
- 插件是否正确安装
- 文档URL是否有效
- 文档格式是否支持
- 插件版本是否匹配
技术要点
- 平台版以上专用:此功能仅平台版以上提供
- 插件管理:支持PDF、TIF、TIFF三种文档类型
- 自动更新:支持插件版本检查和自动更新
- URL管理:插件cab包URL地址管理
- 错误处理:完善的错误处理和恢复机制
- 版本兼容:确保插件版本与控件版本兼容
- 权限管理:插件安装权限管理
总结
AddDocTypePlugin方法是软航OFFICE文档控件平台版以上的重要功能,它允许开发者扩展控件对PDF、TIF、TIFF等文档类型的支持。通过合理配置插件参数,可以实现文档类型的自动识别、插件自动下载和版本管理等功能,大大提升了控件的文档处理能力。