Appearance
屏幕水印相关方法
概述
本节介绍软航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 | 可选 | int | BGR颜色 |
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);
}
}
注意事项
- 水印位置:水印出现在控件上层,不在文件内部
- 文件影响:不会影响提交到服务器的文件内容
- 图片路径:图片水印只支持本地文件路径,不支持远程URL
- 颜色格式:文字水印颜色使用BGR格式
- 透明度设置:透明度值范围通常为0-100
- 性能考虑:水印会影响控件显示性能
- 安全考虑:水印主要用于安全保护,不是真正的文档保护
错误处理
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);
}
}
技术要点
- 水印位置:水印出现在控件上层,不在文件内部
- 文件影响:不会影响提交到服务器的文件内容
- 图片路径:图片水印只支持本地文件路径,不支持远程URL
- 颜色格式:文字水印颜色使用BGR格式
- 透明度设置:透明度值范围通常为0-100
- 性能考虑:水印会影响控件显示性能
- 安全控制:水印主要用于安全保护,不是真正的文档保护
总结
屏幕水印相关方法为软航OFFICE文档控件提供了重要的安全保护功能。通过NtkoAddPicWaterMarkScreen方法可以添加图片水印,通过NtkoAddTextWaterMarkScreen方法可以添加文字水印,通过NtkoQuitWatermark方法可以关闭水印,为开发者提供了灵活的水印管理接口,大大提升了文档查看的安全性和保护能力。这些水印出现在控件上层,不会影响实际文档内容,是理想的安全保护解决方案。