Skip to content

文档控件增加对插件的支持接口

AddDocTypePlugin

语法:

javascript
AddDocTypePlugin(FileExt, ProgID, Version, URL, iDocType, [vbAutoDown])

功能:
增加文档控件对PDF、TIF、TIFF文档类型的支持。

参数:

名称必选/可选数据类型说明
FileExt必选string扩展名
ProgID必选stringProgID
Version必选string插件版本号
URL必选string插件cab包URL地址
iDocType必选long文档类型标识
vbAutoDown可选bool是否自动下载插件

返回值:
无返回值

说明:
平台版以上提供,该函数告知文档控件,增加对PDF、TIF、TIFF文档类型的支持。

参数详细说明:

  1. FileExt(扩展名):值为.pdf.tif.tiff
  2. ProgID:PDF类型值为PDF.NtkoDocument,TIF、TIFF类型值为TIF.NtkoDocument
  3. Version(插件版本号):指定插件的版本号,如4.0.0.0
  4. URL(插件cab包URL地址):插件相对当前网页的URL,注意DLL文件的URL地址不能出错
  5. iDocType(文档类型标识):PDF类型值为51,TIF、TIFF类型值为52
  6. 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.pdfPDF.NtkoDocument51PDF文档支持
TIF.tifTIF.NtkoDocument52TIF图像文档支持
TIFF.tiffTIF.NtkoDocument52TIFF图像文档支持

插件配置参数说明

FileExt(扩展名)

说明示例
.pdfPDF文档扩展名".pdf"
.tifTIF图像扩展名".tif"
.tiffTIFF图像扩展名".tiff"

ProgID(程序标识符)

文档类型ProgID说明
PDFPDF.NtkoDocumentPDF文档处理程序
TIF/TIFFTIF.NtkoDocumentTIF/TIFF图像处理程序

iDocType(文档类型标识)

文档类型说明
51PDFPDF文档类型标识
52TIF/TIFFTIF/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;
    }
}

注意事项

  1. 版本要求:此功能仅平台版以上提供
  2. URL准确性:插件cab包URL地址必须准确,DLL文件URL不能出错
  3. 自动下载:设置自动下载时,会检查版本并自动更新插件
  4. 网络连接:插件下载需要网络连接
  5. 权限设置:插件安装可能需要管理员权限
  6. 兼容性:确保插件版本与控件版本兼容
  7. 错误处理:实现完善的错误处理机制

常见问题

Q1: 插件配置失败怎么办?

A: 检查以下几点:

  • 插件URL是否正确
  • 网络连接是否正常
  • 插件版本是否匹配
  • 控件版本是否支持

Q2: 自动下载不工作怎么办?

A: 检查以下几点:

  • vbAutoDown参数是否设置为true
  • 插件版本号是否正确
  • 网络连接是否正常
  • 浏览器安全设置是否允许下载

Q3: 文档打开失败怎么办?

A: 检查以下几点:

  • 插件是否正确安装
  • 文档URL是否有效
  • 文档格式是否支持
  • 插件版本是否匹配

技术要点

  1. 平台版以上专用:此功能仅平台版以上提供
  2. 插件管理:支持PDF、TIF、TIFF三种文档类型
  3. 自动更新:支持插件版本检查和自动更新
  4. URL管理:插件cab包URL地址管理
  5. 错误处理:完善的错误处理和恢复机制
  6. 版本兼容:确保插件版本与控件版本兼容
  7. 权限管理:插件安装权限管理

总结

AddDocTypePlugin方法是软航OFFICE文档控件平台版以上的重要功能,它允许开发者扩展控件对PDF、TIF、TIFF等文档类型的支持。通过合理配置插件参数,可以实现文档类型的自动识别、插件自动下载和版本管理等功能,大大提升了控件的文档处理能力。