Skip to content

PDF插件相关接口

注意: 本节关于PDF插件的接口,是直接通过文档控件对象调用,而非第六章所介绍的是通过文档控件的ActiveDocument对象调用。主要用于在C/S环境上开发时,无法通过ActiveDocument对象调用PDF插件接口时使用。

水印相关接口

AddPicWaterMarkFromUrl

语法:

javascript
AddPicWaterMarkFromUrl(url, pageNo, [mode], [bgray], [percent], [bPrint], [posX], [posY])

功能:
从URL添加图片水印。

参数:

名称必选/可选数据类型说明
url必选string图片的URL地址
pageNo必选long指定页码
mode可选long水印模式
bgray可选bool变灰,对于水印没必要支持
percent可选long透明度百分比
bPrint可选bool是否打印水印
posX可选long左上角x坐标
posY可选long左上角y坐标

返回值:
无返回值

说明:
从URL添加图片水印。

参数说明:

  • pageNo:页码,0代表第一页,传-1默认代表所有页
  • mode:水印模式,0=原始图片(可使用posX,posY定位),1=适合宽度,2=适合高度
  • bPrint:对于单纯的水印来说本参数不起作用
  • posXposY:当参数mode值为0时有效

使用示例:

javascript
// 从URL添加图片水印
Obj.AddPicWatermarkFromUrl("http://localhost:1070/WebSite2/test.jpg", 1, 2, false, 50);

AddPicWatermarkFromLocal

语法:

javascript
AddPicWatermarkFromLocal(filepath, pageNo, [mode], [bgray], [percent], [bPrint], [bSelect], [posX], [posY])

功能:
从本地添加图片水印。

参数:

名称必选/可选数据类型说明
filepath必选string本地图片的路径
pageNo必选long指定页码
mode可选long水印模式
bgray可选bool变灰,对于水印没必要支持
percent可选long透明度百分比
bPrint可选bool是否打印水印
bSelect可选bool是否允许选择文件
posX可选long左上角x坐标
posY可选long左上角y坐标

返回值:
无返回值

说明:
从本地添加图片水印。

使用示例:

javascript
// 从本地添加图片水印
Obj.AddPicWatermarkFromLocal("C:\\Users\\test.jpg", 1, 2, false, 50, true, false);

AddTextWaterMark

语法:

javascript
AddTextWaterMark(text, pageNo, [mode], [bgray], [percent], [dpi], [bPrint], [posX], [posY], [cx], [cy])

功能:
为文档添加文字水印。

参数:

名称必选/可选数据类型说明
text必选string要添加的文字
pageNo必选long指定页码
mode可选long水印模式
bgray可选bool变灰,对于水印没必要支持
percent可选long透明度百分比
dpi可选bool分辨率
bPrint可选bool是否打印水印
posX可选long左上角x坐标
posY可选long左上角y坐标
cx可选long水印宽度
cy可选long水印高度

返回值:
无返回值

说明:
为文档添加文字水印。

使用示例:

javascript
// 添加文字水印
Obj.AddTextWaterMark("NTKO PDF", 1, 2, false, 50, 200, true, false);

页面导航相关接口

GotoPDFPage

语法:

javascript
GotoPDFPage(pageNo)

功能:
跳转到指定页。

参数:

名称必选/可选数据类型说明
pageNo必选long页码

返回值:
无返回值

说明:
跳转到指定页。

使用示例:

javascript
// 跳转到第5页
Obj.GotoPDFPage(5);

文本搜索相关接口

BeginPDFFindNextText

语法:

javascript
BeginPDFFindNextText(Filename, bMachCase)

功能:
查找下一处匹配的字符。

参数:

名称必选/可选数据类型说明
Filename必选string关键字
bMachCase必选bool字母是否匹配大小写

返回值:
无返回值

说明:
查找下一处匹配的字符。参数bMachCase值为true代表匹配大小写,false代表不匹配。

使用示例:

javascript
// 查找下一处匹配的字符
Obj.BeginPDFFindNextText("ntko", true);

BeginPDFFindPrevText

语法:

javascript
BeginPDFFindPrevText(Filename, bMachCase)

功能:
查找上一处匹配的字符。

参数:

名称必选/可选数据类型说明
Filename必选string关键字
bMachCase必选bool字母是否匹配大小写

返回值:
无返回值

说明:
查找上一处匹配的字符。参数bMachCase值为true代表匹配大小写,false代表不匹配。

使用示例:

javascript
// 查找上一处匹配的字符
Obj.BeginPDFFindPrevText("ntko", true);

文本隐藏相关属性

PDFHiddenText

说明:
String型字符串;可读写;读取/设置打开PDF文档要隐藏的文字。

语法:

javascript
// 设置
Obj.PDFHiddenText = HID_KEYWORD;

// 读取
var hiddenText = Obj.PDFHiddenText;

使用示例:

javascript
// 设置隐藏文字
Obj.PDFHiddenText = "机密文档";

// 读取隐藏文字
var hiddenText = Obj.PDFHiddenText;
console.log("隐藏文字:", hiddenText);

书签管理相关接口

PdfAddCustomBookmark

语法:

javascript
PdfAddCustomBookmark(bUserSetPos, bkmkName, [pageNumber], [poxX], [poxY])

功能:
添加用户自定义书签。

参数:

名称必选/可选数据类型说明
bUserSetPos必选bool是否用户指定位置
bkmkName必选string书签名称
pageNumber可选long书签所在页码
posX可选long书签X坐标
posY可选long书签Y坐标

返回值:
无返回值

说明:
添加用户自定义书签。参数bUserSetPos值为false,则在当页面顶部位置插入自定义书签;值为true,则在参数pageNumber、posX、posY定义的位置处插入自定义书签。

使用示例:

javascript
// 在当前位置添加书签
Obj.PdfAddCustomBookmark(false, "重要章节");

// 在指定位置添加书签
Obj.PdfAddCustomBookmark(true, "第3章", 3, 100, 200);

PdfRemoveCustomBookmarkByIndex

语法:

javascript
PdfRemoveCustomBookmarkByIndex(index)

功能:
根据索引序号删除用户自定义书签。

参数:

名称必选/可选数据类型说明
index必选long用户自定义书签索引序号

返回值:
无返回值

说明:
根据索引序号删除用户自定义书签。

使用示例:

javascript
// 删除索引为0的书签
Obj.PdfRemoveCustomBookmarkByIndex(0);

PdfRemoveCustomBookmarkByName

语法:

javascript
PdfRemoveCustomBookmarkByName(bkmkName)

功能:
根据书签名称删除用户自定义书签。

参数:

名称必选/可选数据类型说明
bkmkName必选string用户自定义书签名称

返回值:
无返回值

说明:
根据书签名称删除用户自定义书签。

使用示例:

javascript
// 删除指定名称的书签
Obj.PdfRemoveCustomBookmarkByName("重要章节");

书签数据管理相关属性

PdfCustomBookmarksBase64

说明:
String型字符串;可读写;读取/设置PDF文档内用户自定义书签Base64值。

语法:

javascript
// 设置
Obj.PdfCustomBookmarksBase64 = BK_BASE64_VALUE;

// 读取
var bookmarksData = Obj.PdfCustomBookmarksBase64;

说明:
由于自定义书签并不属于PDF文档的一部分,所以自定义书签并不能像插入的图片那样随着PDF文档一起提交保存。因此,需要通过此属性提取出自定义书签的Base64数据到一个表单对象中,随文档控件的SaveToURL方法一并提交到服务器(也可以通过Ajax提交),单独存储到数据库独立字段中。在打开PDF文档时,再将存储的Base64数据赋给此属性就可以加载到PDF文档中。

使用示例:

javascript
// 提交时把书签数据赋给一个hide控件提交到服务器
document.getElementById("hidBKData").value = TANGER_OCX_OBJ.PdfCustomBookmarksBase64;
TANGER_OCX_OBJ.SaveToURL("../upLoadPdfFile.jsp?", "EDITFILE", "", "", 0);

// 打开文档时,可在OnDocumentOpened方法中加载书签数据
<script type="text/javascript" language="javascript" for="TANGER_OCX" event="OnDocumentOpened(TANGER_OCX_str,TANGER_OCX_obj);">
    TANGER_OCX.PdfCustomBookmarksBase64 = bkData;
</script>

PdfCustomBookmarksCount

说明:
数值型;只读;统计PDF文档用户自定义书签总数。

语法:

javascript
// 读取
var bookmarksCount = Obj.PdfCustomBookmarksCount;

使用示例:

javascript
// 获取书签总数
var count = Obj.PdfCustomBookmarksCount;
console.log("书签总数:", count);

PdfCustomBookmarksName

说明:
数值型;只读;读取指定索引值的用户自定义书签名称。

语法:

javascript
// 读取
var bookmarkName = Obj.PdfCustomBookmarksName(index);

使用示例:

javascript
// 获取指定索引的书签名称
var bookmarkName = Obj.PdfCustomBookmarksName(0);
console.log("书签名称:", bookmarkName);

电子签章相关接口

AddPDFMultiPageSignFromEKEY

语法:

javascript
AddPDFMultiPageSignFromEKEY(signerName, l_SignType, l_signFrom, [v_SignTime], [v_Password], [v_IsUserSetPosition], [v_SignPosFlag], [v_PosX], [v_PosY], [v_IsPromptSelectSign], [v_SelSignIndex], [v_IsShowUI], [v_IsUseCertificate], [v_IsCheckDocChange], [v_IsAddComment], [v_PrintMode])

功能:
为PDF文档从EKEY添加批量签章。

参数:

名称必选/可选数据类型说明
signerName必选string签章用户名
l_SignType必选long签章类型
l_signFrom必选long签章来源
v_SignTime可选string签章时间
v_Password可选string印章密码
v_IsUserSetPosition可选bool是否允许设置签章位置
v_SignPosFlag可选bool骑缝章位置
v_PosX可选long左上角x坐标
v_PosY可选long左上角y坐标
v_IsPromptSelectSign可选bool是否弹出印章选择列表
v_SelSignIndex可选long默认选择印章索引
v_IsShowUI可选bool是否显示提示对话框
v_IsUseCertificate可选bool是否使用数字证书
v_IsCheckDocChange可选bool是否验证文档改变
v_IsAddComment可选bool是否添加批注
v_PrintMode可选long打印模式

返回值:
无返回值

说明:
为PDF文档从EKEY添加批量签章。

参数说明:

  • l_SignType:签章类型,0=单个签章,1=多页签章即校核章,2=对称骑缝章,3=单侧骑缝章
  • l_signFrom:签章来源,1=从本地,2=从EKEY,3=从url
  • v_SignTime:签章时间,必须使用"yyyy-MM-dd HH:mm:ss"的标准格式,如果为空则使用本机当前时间
  • v_SelSignIndex:默认选择指定印章,0-9对应十个印章位置,-1会弹出印章列表窗口
  • v_IsUserSetPosition:仅应用于校核章,是否允许用户自己设置签章位置
  • v_SignPosFlag:应用于对称骑缝章和单侧骑缝章,1=页面偏上,2=页面居中,3=页面偏下
  • v_PrintMode:打印模式,0=不打印,1=打印黑白,2=打印原样

AddPDFSecBarcode

语法:

javascript
AddPDFSecBarcode(signerName, [v_barCodeType], [v_SignTime], [v_Password], [v_IsUserSetPosition], [v_PageNumber], [v_PosX], [v_PosY], [v_IsShowUI], [v_IsUseCertificate], [v_IsCheckDocChange], [v_IsAddComment], [v_PrintMode])

功能:
为PDF添加一维码和二维码电子印章。

参数:

名称必选/可选数据类型说明
signerName必选string签章用户名
v_barCodeType可选long二维码类型
v_SignTime可选string签章时间
v_Password可选string印章密码
v_IsUserSetPosition可选bool是否允许设置签章位置
v_PageNumber可选long签章页索引
v_PosX可选long左上角x坐标
v_PosY可选long左上角y坐标
v_IsShowUI可选bool是否显示提示对话框
v_IsUseCertificate可选bool是否使用数字证书
v_IsCheckDocChange可选bool是否验证文档改变
v_IsAddComment可选bool是否添加批注
v_PrintMode可选long打印模式

返回值:
无返回值

说明:
为PDF添加一维码和二维码电子印章。

AddPDFSecHandSign

语法:

javascript
AddPDFSecHandSign(signerName, [v_SignTime], [v_Password], [v_IsUserSetPosition], [v_PageNumber], [v_PosX], [v_PosY], [v_IsShowUI], [v_IsUseCertificate], [v_IsCheckDocChange], [v_IsAddComment], [v_PrintMode])

功能:
为PDF添加安全手写签名。

参数:

名称必选/可选数据类型说明
signerName必选string签章用户名
v_SignTime可选string签章时间
v_Password可选string印章密码
v_IsUserSetPosition可选bool是否允许设置签章位置
v_PageNumber可选long签章页索引
v_PosX可选long左上角x坐标
v_PosY可选long左上角y坐标
v_IsShowUI可选bool是否显示提示对话框
v_IsUseCertificate可选bool是否使用数字证书
v_IsCheckDocChange可选bool是否验证文档改变
v_IsAddComment可选bool是否添加批注
v_PrintMode可选long打印模式

返回值:
无返回值

说明:
为PDF添加安全手写签名。

使用示例:

javascript
// 添加安全手写签名
Obj.AddPDFSecHandSign("ntko", "2013-02-01 12:02:14", "", true, 2, 10, 100, true, true, true, false, 2);

AddPDFSecKeyboardComment

语法:

javascript
AddPDFSecKeyboardComment(signerName, [v_SignTime], [v_Password], [v_IsUserSetPosition], [v_PageNumber], [v_PosX], [v_PosY], [v_IsShowUI], [v_IsUseCertificate], [v_IsCheckDocChange], [v_IsAddComment], [v_PrintMode])

功能:
为PDF添加安全键盘批注。

参数:

名称必选/可选数据类型说明
signerName必选string签章用户名
v_SignTime可选string签章时间
v_Password可选string印章密码
v_IsUserSetPosition可选bool是否允许设置签章位置
v_PageNumber可选long签章页索引
v_PosX可选long左上角x坐标
v_PosY可选long左上角y坐标
v_IsShowUI可选bool是否显示提示对话框
v_IsUseCertificate可选bool是否使用数字证书
v_IsCheckDocChange可选bool是否验证文档改变
v_IsAddComment可选bool是否添加批注
v_PrintMode可选long打印模式

返回值:
无返回值

说明:
为PDF添加安全键盘批注。

使用示例:

javascript
// 添加安全键盘批注
Obj.AddPDFSecKeyboardComment("ntko", "2013-02-01 12:02:14", "", true, 2, 10, 100, true, true, true, false, 2);

AddPDFSecSignFromEKEY

语法:

javascript
AddPDFSecSignFromEKEY(signerName, [v_SignTime], [v_Password], [v_IsUserSetPosition], [v_PageNumber], [v_PosX], [v_PosY], [v_IsPromptSelectSign], [v_SelSignIndex], [v_IsShowUI], [v_IsUseCertificate], [v_IsCheckDocChange], [v_IsAddComment], [v_PrintMode])

功能:
为PDF从EKEY添加安全印章。

参数:

名称必选/可选数据类型说明
signerName必选string签章用户名
v_SignTime可选string签章时间
v_Password可选string印章密码
v_IsUserSetPosition可选bool是否允许设置签章位置
v_PageNumber可选long签章页索引
v_PosX可选long左上角x坐标
v_PosY可选long左上角y坐标
v_IsPromptSelectSign可选bool是否弹出印章选择列表
v_SelSignIndex可选long默认选择印章索引
v_IsShowUI可选bool是否显示提示对话框
v_IsUseCertificate可选bool是否使用数字证书
v_IsCheckDocChange可选bool是否验证文档改变
v_IsAddComment可选bool是否添加批注
v_PrintMode可选long打印模式

返回值:
无返回值

说明:
为PDF从EKEY添加安全印章。

使用示例:

javascript
// 从EKEY添加安全印章
Obj.AddPDFSecSignFromEKEY("ntko", "2013-02-01 12:02:14", "", true, 2, 10, 100, true, true, true, true, false, 2);

接口分类总结

分类接口功能说明
水印管理AddPicWaterMarkFromUrl从URL添加图片水印支持URL图片水印
AddPicWatermarkFromLocal从本地添加图片水印支持本地图片水印
AddTextWaterMark添加文字水印支持文字水印
页面导航GotoPDFPage跳转到指定页页面导航功能
文本搜索BeginPDFFindNextText查找下一处匹配字符文本搜索功能
BeginPDFFindPrevText查找上一处匹配字符文本搜索功能
文本隐藏PDFHiddenText设置/读取隐藏文字文本隐藏功能
书签管理PdfAddCustomBookmark添加自定义书签书签管理功能
PdfRemoveCustomBookmarkByIndex根据索引删除书签书签管理功能
PdfRemoveCustomBookmarkByName根据名称删除书签书签管理功能
书签数据PdfCustomBookmarksBase64书签Base64数据书签数据管理
PdfCustomBookmarksCount书签总数书签统计功能
PdfCustomBookmarksName书签名称书签名称获取
电子签章AddPDFMultiPageSignFromEKEY批量签章批量签章功能
AddPDFSecBarcode二维码签章二维码签章功能
AddPDFSecHandSign手写签名手写签名功能
AddPDFSecKeyboardComment键盘批注键盘批注功能
AddPDFSecSignFromEKEYEKEY签章EKEY签章功能

使用流程

1. PDF文档处理流程

javascript
// PDF文档处理流程
function processPDFDocument() {
    try {
        // 1. 添加水印
        Obj.AddTextWaterMark("机密文档", -1, 2, false, 50);
        
        // 2. 添加书签
        Obj.PdfAddCustomBookmark(false, "重要章节");
        
        // 3. 添加签章
        Obj.AddPDFSecSignFromEKEY("ntko", "2023-01-01 12:00:00", "", true, 1, 100, 100);
        
        console.log("PDF文档处理完成");
    } catch (error) {
        console.error("PDF文档处理失败:", error.message);
    }
}

2. 书签管理流程

javascript
// 书签管理流程
function manageBookmarks() {
    try {
        // 添加书签
        Obj.PdfAddCustomBookmark(false, "第1章");
        Obj.PdfAddCustomBookmark(false, "第2章");
        
        // 获取书签信息
        var count = Obj.PdfCustomBookmarksCount;
        console.log("书签总数:", count);
        
        // 获取书签名称
        for (var i = 0; i < count; i++) {
            var name = Obj.PdfCustomBookmarksName(i);
            console.log("书签", i, ":", name);
        }
        
        // 保存书签数据
        var bookmarksData = Obj.PdfCustomBookmarksBase64;
        document.getElementById("hidBKData").value = bookmarksData;
        
    } catch (error) {
        console.error("书签管理失败:", error.message);
    }
}

3. 电子签章流程

javascript
// 电子签章流程
function addElectronicSignature() {
    try {
        // 添加手写签名
        Obj.AddPDFSecHandSign(
            "张三", 
            "2023-01-01 12:00:00", 
            "", 
            true, 
            1, 
            100, 
            100, 
            true, 
            true, 
            true, 
            false, 
            2
        );
        
        // 添加键盘批注
        Obj.AddPDFSecKeyboardComment(
            "李四", 
            "2023-01-01 12:30:00", 
            "", 
            true, 
            2, 
            200, 
            200, 
            true, 
            true, 
            true, 
            false, 
            2
        );
        
        console.log("电子签章添加完成");
    } catch (error) {
        console.error("电子签章添加失败:", error.message);
    }
}

注意事项

  1. C/S环境专用:这些接口主要用于C/S环境开发,无法通过ActiveDocument对象调用时使用
  2. PDF插件依赖:需要先配置PDF插件支持才能使用这些接口
  3. 参数格式:签章时间必须使用"yyyy-MM-dd HH:mm:ss"格式
  4. 坐标系统:坐标参数使用PDF文档的坐标系统
  5. 权限要求:某些功能可能需要特定的权限设置
  6. 兼容性:确保PDF插件版本与控件版本兼容
  7. 错误处理:实现完善的错误处理机制

错误处理

javascript
// PDF插件错误处理
function handlePDFPluginError(operation, error) {
    console.error("PDF插件操作失败:", operation, error.message);
    
    switch(operation) {
        case 'AddTextWaterMark':
            console.log("水印添加失败,请检查:");
            console.log("1. PDF文档是否已打开");
            console.log("2. 页码参数是否正确");
            console.log("3. 水印参数是否有效");
            break;
        case 'PdfAddCustomBookmark':
            console.log("书签添加失败,请检查:");
            console.log("1. 书签名称是否有效");
            console.log("2. 页码参数是否正确");
            console.log("3. 坐标参数是否有效");
            break;
        case 'AddPDFSecSignFromEKEY':
            console.log("签章添加失败,请检查:");
            console.log("1. EKEY是否正确连接");
            console.log("2. 签章参数是否正确");
            console.log("3. 权限设置是否有效");
            break;
        default:
            console.log("未知PDF插件操作失败");
    }
}

最佳实践

1. 水印管理

javascript
// 水印管理最佳实践
function watermarkManagement() {
    try {
        // 添加文字水印
        Obj.AddTextWaterMark("机密文档", -1, 2, false, 50);
        
        // 添加图片水印
        Obj.AddPicWatermarkFromLocal("C:\\watermark.png", -1, 2, false, 50);
        
        console.log("水印添加成功");
    } catch (error) {
        console.error("水印添加失败:", error.message);
    }
}

2. 书签数据管理

javascript
// 书签数据管理最佳实践
function bookmarkDataManagement() {
    try {
        // 添加书签
        Obj.PdfAddCustomBookmark(false, "重要章节");
        
        // 获取书签数据
        var bookmarksData = Obj.PdfCustomBookmarksBase64;
        
        // 保存到隐藏字段
        document.getElementById("hidBKData").value = bookmarksData;
        
        // 提交到服务器
        Obj.SaveToURL("../upLoadPdfFile.jsp?", "EDITFILE", "", "", 0);
        
        console.log("书签数据管理完成");
    } catch (error) {
        console.error("书签数据管理失败:", error.message);
    }
}

3. 电子签章管理

javascript
// 电子签章管理最佳实践
function electronicSignatureManagement() {
    try {
        // 检查EKEY连接
        if (Obj.IsEkeyConnected) {
            // 添加EKEY签章
            Obj.AddPDFSecSignFromEKEY("ntko", "2023-01-01 12:00:00", "", true, 1, 100, 100);
        } else {
            // 添加手写签名
            Obj.AddPDFSecHandSign("用户", "2023-01-01 12:00:00", "", true, 1, 100, 100);
        }
        
        console.log("电子签章管理完成");
    } catch (error) {
        console.error("电子签章管理失败:", error.message);
    }
}

技术要点

  1. C/S环境专用:这些接口专门为C/S环境设计
  2. PDF插件依赖:需要先配置PDF插件支持
  3. 参数格式:签章时间必须使用标准格式
  4. 坐标系统:使用PDF文档的坐标系统
  5. 权限管理:某些功能需要特定权限
  6. 兼容性:确保插件版本兼容
  7. 错误处理:完善的错误处理机制

总结

PDF插件相关接口为软航OFFICE文档控件提供了强大的PDF文档处理能力,包括水印管理、页面导航、文本搜索、书签管理、电子签章等功能。这些接口专门为C/S环境设计,为开发者提供了丰富的PDF文档操作能力,大大提升了控件的PDF文档处理功能。