Skip to content

屏幕水印相关方法

概述

本节介绍软航OFFICE文档控件提供的屏幕水印相关方法,这些方法允许开发者在控件上层添加图片水印和文字水印,为文档查看提供安全保护功能。注意:本节所实现的水印是出现在控件上层,并不是在文件里插入水印,所以不会导致提交到服务器上的文件会带有本节插入的屏幕水印。

图片水印

NtkoAddPicWaterMarkScreen

语法:

javascript
NtkoAddPicWaterMarkScreen(filePath, [rotate], [b_lend])

功能:
在控件上层添加图片水印。

参数:

名称必选/可选数据类型说明
filePath必选string图片文件路径
rotate可选int旋转角度
b_lend可选Int水印透明度

返回值:
布尔型。

说明:
参数filePath:本地图片文件路径,暂不支持从远程URL地址下载图片。

使用示例:

javascript
// 添加图片水印
function addPictureWatermark() {
    try {
        // 添加图片水印
        var result = OCX_OBJ.NtkoAddPicWaterMarkScreen("C:\\watermark.png");
        if (result) {
            console.log("图片水印添加成功");
        } else {
            console.log("图片水印添加失败");
        }
        return result;
    } catch (error) {
        console.error("添加图片水印失败:", error.message);
        return false;
    }
}

// 添加带旋转角度的图片水印
function addRotatedPictureWatermark() {
    try {
        // 添加旋转45度的图片水印
        var result = OCX_OBJ.NtkoAddPicWaterMarkScreen("C:\\watermark.png", 45);
        if (result) {
            console.log("旋转图片水印添加成功");
        } else {
            console.log("旋转图片水印添加失败");
        }
        return result;
    } catch (error) {
        console.error("添加旋转图片水印失败:", error.message);
        return false;
    }
}

// 添加带透明度的图片水印
function addTransparentPictureWatermark() {
    try {
        // 添加50%透明度的图片水印
        var result = OCX_OBJ.NtkoAddPicWaterMarkScreen("C:\\watermark.png", 0, 50);
        if (result) {
            console.log("透明图片水印添加成功");
        } else {
            console.log("透明图片水印添加失败");
        }
        return result;
    } catch (error) {
        console.error("添加透明图片水印失败:", error.message);
        return false;
    }
}

// 添加完整参数的图片水印
function addFullPictureWatermark() {
    try {
        // 添加旋转30度、透明度70%的图片水印
        var result = OCX_OBJ.NtkoAddPicWaterMarkScreen("C:\\watermark.png", 30, 70);
        if (result) {
            console.log("完整参数图片水印添加成功");
        } else {
            console.log("完整参数图片水印添加失败");
        }
        return result;
    } catch (error) {
        console.error("添加完整参数图片水印失败:", error.message);
        return false;
    }
}

// 动态添加图片水印
function addDynamicPictureWatermark(imagePath, rotation, transparency) {
    try {
        if (imagePath && imagePath.trim() !== "") {
            var result = OCX_OBJ.NtkoAddPicWaterMarkScreen(imagePath.trim(), rotation || 0, transparency || 100);
            if (result) {
                console.log("动态图片水印添加成功:", imagePath);
            } else {
                console.log("动态图片水印添加失败:", imagePath);
            }
            return result;
        } else {
            console.error("无效的图片路径:", imagePath);
            return false;
        }
    } catch (error) {
        console.error("动态添加图片水印失败:", error.message);
        return false;
    }
}

文字水印

NtkoAddTextWaterMarkScreen

语法:

javascript
NtkoAddTextWaterMarkScreen(bstrText, [pclr], [fontsize], [v_fontname], [v_blend], [widthinterval], [heightinterval])

功能:
在控件上层添加文字水印。

参数:

名称必选/可选数据类型说明
bstrText必选string水印文字字符串
pclr可选intBGR颜色
fontsize可选int字体大小
v_fontname可选string字体名称
v_blend可选int水印透明度
widthinterval可选Int宽度间隔,厘米单位
heightinterval可选int高度间隔,厘米单位

返回值:
布尔型。

说明:
参数pclr:是一个BGR (Blue, Green, Red)数值。BGR value = (blue * 65536) + (green * 256) + red。如红色就是255。

使用示例:

javascript
// 添加基本文字水印
function addBasicTextWatermark() {
    try {
        // 添加基本文字水印
        var result = OCX_OBJ.NtkoAddTextWaterMarkScreen("机密文档");
        if (result) {
            console.log("基本文字水印添加成功");
        } else {
            console.log("基本文字水印添加失败");
        }
        return result;
    } catch (error) {
        console.error("添加基本文字水印失败:", error.message);
        return false;
    }
}

// 添加带颜色的文字水印
function addColoredTextWatermark() {
    try {
        // 添加红色文字水印
        var result = OCX_OBJ.NtkoAddTextWaterMarkScreen("机密文档", 255);
        if (result) {
            console.log("红色文字水印添加成功");
        } else {
            console.log("红色文字水印添加失败");
        }
        return result;
    } catch (error) {
        console.error("添加红色文字水印失败:", error.message);
        return false;
    }
}

// 添加完整参数的文字水印
function addFullTextWatermark() {
    try {
        // 添加完整参数的文字水印
        var result = OCX_OBJ.NtkoAddTextWaterMarkScreen("this is my watermark", 255, 10, 10, "", 20, 1, 5);
        if (result) {
            console.log("完整参数文字水印添加成功");
        } else {
            console.log("完整参数文字水印添加失败");
        }
        return result;
    } catch (error) {
        console.error("添加完整参数文字水印失败:", error.message);
        return false;
    }
}

// 添加自定义样式的文字水印
function addCustomTextWatermark() {
    try {
        // 添加自定义样式的文字水印
        var watermarkConfig = {
            text: "机密文档 - 禁止复制",
            color: 255, // 红色
            fontSize: 16,
            fontName: "Arial",
            transparency: 50,
            widthInterval: 3,
            heightInterval: 2
        };
        
        var result = OCX_OBJ.NtkoAddTextWaterMarkScreen(
            watermarkConfig.text,
            watermarkConfig.color,
            watermarkConfig.fontSize,
            watermarkConfig.fontName,
            watermarkConfig.transparency,
            watermarkConfig.widthInterval,
            watermarkConfig.heightInterval
        );
        
        if (result) {
            console.log("自定义样式文字水印添加成功:", watermarkConfig);
        } else {
            console.log("自定义样式文字水印添加失败:", watermarkConfig);
        }
        return result;
    } catch (error) {
        console.error("添加自定义样式文字水印失败:", error.message);
        return false;
    }
}

// 动态添加文字水印
function addDynamicTextWatermark(text, color, fontSize, fontName, transparency, widthInterval, heightInterval) {
    try {
        if (text && text.trim() !== "") {
            var result = OCX_OBJ.NtkoAddTextWaterMarkScreen(
                text.trim(),
                color || 0,
                fontSize || 12,
                fontName || "",
                transparency || 100,
                widthInterval || 1,
                heightInterval || 1
            );
            
            if (result) {
                console.log("动态文字水印添加成功:", text);
            } else {
                console.log("动态文字水印添加失败:", text);
            }
            return result;
        } else {
            console.error("无效的文字内容:", text);
            return false;
        }
    } catch (error) {
        console.error("动态添加文字水印失败:", error.message);
        return false;
    }
}

水印管理

NtkoQuitWatermark

语法:

javascript
NtkoQuitWatermark()

功能:
关闭退出屏幕水印。

返回值:
无返回值。

说明:
关闭退出屏幕水印。

使用示例:

javascript
// 关闭屏幕水印
function quitWatermark() {
    try {
        OCX_OBJ.NtkoQuitWatermark();
        console.log("屏幕水印已关闭");
    } catch (error) {
        console.error("关闭屏幕水印失败:", error.message);
    }
}

// 切换水印状态
function toggleWatermark() {
    try {
        // 检查当前是否有水印
        var hasWatermark = checkWatermarkStatus();
        
        if (hasWatermark) {
            // 关闭水印
            OCX_OBJ.NtkoQuitWatermark();
            console.log("屏幕水印已关闭");
        } else {
            // 添加默认水印
            OCX_OBJ.NtkoAddTextWaterMarkScreen("机密文档");
            console.log("屏幕水印已添加");
        }
    } catch (error) {
        console.error("切换水印状态失败:", error.message);
    }
}

// 检查水印状态
function checkWatermarkStatus() {
    try {
        // 这里需要根据实际需求实现水印状态检查
        // 由于没有直接的状态查询方法,可以通过其他方式判断
        console.log("检查水印状态");
        return false; // 默认返回false,实际实现需要根据具体情况
    } catch (error) {
        console.error("检查水印状态失败:", error.message);
        return false;
    }
}

方法分类总结

分类方法功能说明
图片水印NtkoAddPicWaterMarkScreen在控件上层添加图片水印图片水印管理
文字水印NtkoAddTextWaterMarkScreen在控件上层添加文字水印文字水印管理
水印管理NtkoQuitWatermark关闭退出屏幕水印水印控制

使用流程

1. 基本水印管理流程

javascript
// 基本水印管理流程
function basicWatermarkManagement() {
    try {
        // 添加文字水印
        OCX_OBJ.NtkoAddTextWaterMarkScreen("机密文档");
        
        // 添加图片水印
        OCX_OBJ.NtkoAddPicWaterMarkScreen("C:\\watermark.png");
        
        console.log("基本水印管理流程完成");
    } catch (error) {
        console.error("基本水印管理流程失败:", error.message);
    }
}

2. 水印安全控制流程

javascript
// 水印安全控制流程
function watermarkSecurityControl() {
    try {
        // 添加安全水印
        var securityConfig = {
            text: "机密文档 - 禁止复制",
            color: 255, // 红色
            fontSize: 14,
            transparency: 60
        };
        
        OCX_OBJ.NtkoAddTextWaterMarkScreen(
            securityConfig.text,
            securityConfig.color,
            securityConfig.fontSize,
            "",
            securityConfig.transparency
        );
        
        console.log("水印安全控制流程完成");
    } catch (error) {
        console.error("水印安全控制流程失败:", error.message);
    }
}

3. 水印清理流程

javascript
// 水印清理流程
function watermarkCleanupFlow() {
    try {
        // 关闭所有水印
        OCX_OBJ.NtkoQuitWatermark();
        
        console.log("水印清理流程完成");
    } catch (error) {
        console.error("水印清理流程失败:", error.message);
    }
}

完整示例

1. 基础水印管理

javascript
// 基础水印管理示例
function basicWatermarkManagement() {
    try {
        // 添加文字水印
        OCX_OBJ.NtkoAddTextWaterMarkScreen("机密文档");
        
        console.log("基础水印管理完成");
    } catch (error) {
        console.error("基础水印管理失败:", error.message);
    }
}

2. 高级水印管理

javascript
// 高级水印管理示例
function advancedWatermarkManagement() {
    try {
        // 水印管理配置
        var watermarkConfig = {
            textWatermark: {
                text: "机密文档 - 禁止复制",
                color: 255,
                fontSize: 16,
                fontName: "Arial",
                transparency: 50,
                widthInterval: 3,
                heightInterval: 2
            },
            pictureWatermark: {
                imagePath: "C:\\watermark.png",
                rotation: 45,
                transparency: 70
            }
        };
        
        // 添加文字水印
        OCX_OBJ.NtkoAddTextWaterMarkScreen(
            watermarkConfig.textWatermark.text,
            watermarkConfig.textWatermark.color,
            watermarkConfig.textWatermark.fontSize,
            watermarkConfig.textWatermark.fontName,
            watermarkConfig.textWatermark.transparency,
            watermarkConfig.textWatermark.widthInterval,
            watermarkConfig.textWatermark.heightInterval
        );
        
        // 添加图片水印
        OCX_OBJ.NtkoAddPicWaterMarkScreen(
            watermarkConfig.pictureWatermark.imagePath,
            watermarkConfig.pictureWatermark.rotation,
            watermarkConfig.pictureWatermark.transparency
        );
        
        console.log("高级水印管理完成:", watermarkConfig);
    } catch (error) {
        console.error("高级水印管理失败:", error.message);
    }
}

3. 水印安全质量控制

javascript
// 水印安全质量控制示例
function watermarkSecurityQualityControl() {
    try {
        // 设置高安全级别水印
        var securityLevel = "high";
        
        switch(securityLevel) {
            case "high":
                // 高安全级别:添加多重水印
                OCX_OBJ.NtkoAddTextWaterMarkScreen("机密文档 - 禁止复制", 255, 18, "Arial", 40, 2, 1);
                OCX_OBJ.NtkoAddPicWaterMarkScreen("C:\\security_watermark.png", 0, 50);
                break;
            case "medium":
                // 中等安全级别:添加单重水印
                OCX_OBJ.NtkoAddTextWaterMarkScreen("机密文档", 0, 14, "", 60, 3, 2);
                break;
            case "low":
                // 低安全级别:添加简单水印
                OCX_OBJ.NtkoAddTextWaterMarkScreen("内部文档");
                break;
            default:
                console.error("未知的安全级别:", securityLevel);
        }
        
        console.log("水印安全质量控制完成");
    } catch (error) {
        console.error("水印安全质量控制失败:", error.message);
    }
}

注意事项

  1. 水印位置:水印出现在控件上层,不在文件内部
  2. 文件影响:不会影响提交到服务器的文件内容
  3. 图片路径:图片水印只支持本地文件路径,不支持远程URL
  4. 颜色格式:文字水印颜色使用BGR格式
  5. 透明度设置:透明度值范围通常为0-100
  6. 性能考虑:水印会影响控件显示性能
  7. 安全考虑:水印主要用于安全保护,不是真正的文档保护

错误处理

javascript
// 水印管理错误处理
function handleWatermarkError(operation, error) {
    console.error("水印管理失败:", operation, error.message);
    
    switch(operation) {
        case 'NtkoAddPicWaterMarkScreen':
            console.log("添加图片水印失败,请检查:");
            console.log("1. 图片文件路径是否正确");
            console.log("2. 图片文件是否存在");
            console.log("3. 图片格式是否支持");
            break;
        case 'NtkoAddTextWaterMarkScreen':
            console.log("添加文字水印失败,请检查:");
            console.log("1. 文字内容是否有效");
            console.log("2. 颜色值是否正确");
            console.log("3. 字体设置是否有效");
            break;
        case 'NtkoQuitWatermark':
            console.log("关闭水印失败,请检查:");
            console.log("1. 控件是否已正确初始化");
            console.log("2. 是否有水印需要关闭");
            break;
        default:
            console.log("未知水印管理操作失败");
    }
}

最佳实践

1. 水印管理最佳实践

javascript
// 水印管理最佳实践
function watermarkManagementBestPractice() {
    try {
        // 水印管理配置
        var watermarkConfig = {
            textWatermark: {
                text: "机密文档 - 禁止复制",
                color: 255,
                fontSize: 16,
                fontName: "Arial",
                transparency: 50,
                widthInterval: 3,
                heightInterval: 2
            },
            pictureWatermark: {
                imagePath: "C:\\watermark.png",
                rotation: 0,
                transparency: 70
            }
        };
        
        // 应用水印管理配置
        function applyWatermarkConfig() {
            try {
                // 添加文字水印
                OCX_OBJ.NtkoAddTextWaterMarkScreen(
                    watermarkConfig.textWatermark.text,
                    watermarkConfig.textWatermark.color,
                    watermarkConfig.textWatermark.fontSize,
                    watermarkConfig.textWatermark.fontName,
                    watermarkConfig.textWatermark.transparency,
                    watermarkConfig.textWatermark.widthInterval,
                    watermarkConfig.textWatermark.heightInterval
                );
                
                // 添加图片水印
                OCX_OBJ.NtkoAddPicWaterMarkScreen(
                    watermarkConfig.pictureWatermark.imagePath,
                    watermarkConfig.pictureWatermark.rotation,
                    watermarkConfig.pictureWatermark.transparency
                );
                
                console.log("水印管理配置应用成功");
            } catch (error) {
                handleWatermarkError('NtkoAddTextWaterMarkScreen', error);
            }
        }
        
        // 应用配置
        applyWatermarkConfig();
        
    } catch (error) {
        console.error("水印管理最佳实践失败:", error.message);
    }
}

2. 水印安全质量控制最佳实践

javascript
// 水印安全质量控制最佳实践
function watermarkSecurityQualityControlBestPractice() {
    try {
        // 水印安全质量控制
        function controlWatermarkSecurity() {
            try {
                // 设置高安全级别水印
                var securityLevel = "high";
                var watermarkResult = {};
                
                switch(securityLevel) {
                    case "high":
                        // 高安全级别:添加多重水印
                        watermarkResult.textWatermark = OCX_OBJ.NtkoAddTextWaterMarkScreen("机密文档 - 禁止复制", 255, 18, "Arial", 40, 2, 1);
                        watermarkResult.pictureWatermark = OCX_OBJ.NtkoAddPicWaterMarkScreen("C:\\security_watermark.png", 0, 50);
                        break;
                    case "medium":
                        // 中等安全级别:添加单重水印
                        watermarkResult.textWatermark = OCX_OBJ.NtkoAddTextWaterMarkScreen("机密文档", 0, 14, "", 60, 3, 2);
                        break;
                    case "low":
                        // 低安全级别:添加简单水印
                        watermarkResult.textWatermark = OCX_OBJ.NtkoAddTextWaterMarkScreen("内部文档");
                        break;
                    default:
                        console.error("未知的安全级别:", securityLevel);
                }
                
                console.log("水印安全质量控制完成:", watermarkResult);
                return watermarkResult;
            } catch (error) {
                console.error("水印安全质量控制失败:", error.message);
                return null;
            }
        }
        
        // 执行安全质量控制
        var securityResult = controlWatermarkSecurity();
        console.log("水印安全质量控制结果:", securityResult);
        
    } catch (error) {
        console.error("水印安全质量控制最佳实践失败:", error.message);
    }
}

技术要点

  1. 水印位置:水印出现在控件上层,不在文件内部
  2. 文件影响:不会影响提交到服务器的文件内容
  3. 图片路径:图片水印只支持本地文件路径,不支持远程URL
  4. 颜色格式:文字水印颜色使用BGR格式
  5. 透明度设置:透明度值范围通常为0-100
  6. 性能考虑:水印会影响控件显示性能
  7. 安全控制:水印主要用于安全保护,不是真正的文档保护

总结

屏幕水印相关方法为软航OFFICE文档控件提供了重要的安全保护功能。通过NtkoAddPicWaterMarkScreen方法可以添加图片水印,通过NtkoAddTextWaterMarkScreen方法可以添加文字水印,通过NtkoQuitWatermark方法可以关闭水印,为开发者提供了灵活的水印管理接口,大大提升了文档查看的安全性和保护能力。这些水印出现在控件上层,不会影响实际文档内容,是理想的安全保护解决方案。