跳到内容
  • 福昕首页
  • 开发中心
  • SDK文档资料
  • 插件商店
  • 福昕首页
  • 开发中心
  • SDK文档资料
  • 插件商店
申请试用
  • 企业自动化
    • Compressor
  • 福昕CloudAPI
  • 福昕PDF SDK 软件开发工具包
    • 福昕PDF SDK(ActiveX)
    • 福昕PDF SDK(桌面/服务器)
    • 福昕PDF SDK(Plug-in)
    • 福昕 PDF SDK(安卓)
    • 福昕PDF SDK(iOS)
    • 福昕PDF SDK(Web)
  • 福昕管理控制台
    • 公有云
    • 私有云
    • 通用情况
  • 福昕阅读器
    • RMS插件
  • 福昕高级编辑器
    • AI助手
    • Mac版本
      • 常规问题
    • Windows版本
      • ECM集成
      • 互联PDF
      • 企业管理指南
      • 保护
      • 内容编辑
      • 创建PDF
      • 压缩
      • 图章
      • 安装与卸载
      • 常见问题
      • 打印
      • 注释/评论
      • 福昕插件
      • 翻译助手
      • 翻译助手教程
      • 试用与激活
      • 转换
      • 页面管理
    • 教育用户
      • 论文查重
      • 论文畅
      • 操作指南
    • 网页版
      • Foxit eSign
      • 电子签章
    • 订阅
    • 资源
  • 福昕高级编辑器Linux版本
  • 福船图纸管理系统
  • 福昕PDF SDK 软件开发工具包 > 福昕PDF SDK(Web)
  • 标签:

如何配置查看者和文档的权限?

  • 福昕知识库
  • 2023-06-01

在实际的应用场景中,我们往往需要对查看者或者文档本身配置一些权限。 这篇文章将详细介绍如何在 WebPDF SDK 中配置这些权限。

查看者权限设置

*      查看者的文档权限

我们可以在初始化PDFUI或PDFViewer时,在viewerOptions参数中配置查看器相关的权限,并通过API getDocPermissions来实现控制的权限。 您可以参考 API 参考中的 PDFViewCtrl.PDF.constant.User_Permissions 去获取具体权限的详细信息。

示例代码如下:

var pdfui = new PDFUI({

            viewerOptions: {

                ……

                customs:{

                    getDocPermissions: function () {

                        //you can operate text annotations, fill in interactive form fields and print the document.

                        return PDFViewCtrl.PDF.constant.User_Permissions.annotForm | PDFViewCtrl.PDF.constant.User_Permissions.print

                    },

                }

            },

           ……

        });

*      查看者的注释权限

有两种方法可以配置注释权限。 不同的方式可以控制不同注释的相关权限,您可以根据需要选择其一。

1.       通过 API getAnnotPermissions 配置权限。 详细权限值请参考PDFViewCtrl.constants.ANNOTATION_PERMISSION。

示例代码如下:

var ANNOTATION_PERMISSION = PDFViewCtrl.constants.ANNOTATION_PERMISSION;

var pdfui = new PDFUI({

    viewerOptions: {

        ……

        customs:{

            getAnnotPermissions: function(annot) {

                if(annot.getTitle() === userName){

                    return Promise.resolve(JSON.stringify([ANNOTATION_PERMISSION.fully]))

                }else{

                    return Promise.resolve(JSON.stringify([ANNOTATION_PERMISSION.replyable]))

                }

            }

        }

    },

    ……

});

2.       通过注释标志配置权限。 注释标志是 PDF 标准中定义的与注释相关的权限。 您可以参考 PDFViewCtrl.PDF.annots.constant.Annot_Flags 获取更多详细信息。

当当前用户与注解作者一致时,将拥有所有权限,反之将被被关闭权限。示例代码如下:

var userName = "";

pdfui.addViewerEventListener(PDFViewCtrl.Events.tapAnnotation , function(annotRender){

    var annot = annotRender.getAnnot();

    pdfui.getAnnotManager(annot).then(function(annotManager) {

       var annotFlag = annotManager.getAnnotFlag(annot);

        console.log("===current annotation information:pageIndex:",annot.getPage().info.index,"type:",annot.info.type,",title:",annot.info.title,':permissions');

        console.log('checkHidden',annotFlag.checkHidden())

        console.log('checkInvisible',annotFlag.checkInvisible())

        console.log('checkLocked',annotFlag.checkLocked())

        console.log('checkLockedContents',annotFlag.checkLockedContents())

        console.log('checkNoRotate',annotFlag.checkNoRotate())

        console.log('checkNoView',annotFlag.checkNoView())

        console.log('checkNoZoom',annotFlag.checkNoZoom())

        console.log('checkPrint',annotFlag.checkPrint())

        console.log('checkReadOnly',annotFlag.checkReadOnly())

        console.log('checkToggleNoView',annotFlag.checkToggleNoView())

        pdfui.redraw(true);

 

    })

})

 

pdfui.getUserName().then(function (name){

    userName = name;

});

 

pdfui.getAnnotManager().then(function(annotManager) {

    annotManager.setViewerAnnotFlag(function(annot) {

        if(annot.getTitle() === userName){

            return 0;

        }else{

            return PDFViewCtrl.PDF.annots.constant.Annot_Flags.locked;

        }

    });

    pdfui.redraw(true);

});

*      附加权限

 

附加权限目前只支持下载权限,允许用户下载PDF文件。 有关详细信息,请参阅 PDFViewCtrl.PDF.constant.Additional_Permission。

示例代码如下:

var pdfui = new PDFUI({

            viewerOptions: {

                ……

                customs:{

                    getAdditionalPerm:function(){

                        //return 0 means no permission to download the document.

                        return 0;

                    },

                }

            },

            ……

        });

文档权限设置

*      文档权限

Foxit PDF SDK for Web 可以通过设置文档密码来配置文档权限。 可以给文档设置ownerPassword,然后配置文档相关的权限。

请参阅 API 参考中的 PDFViewCtrl.PDF.constant.User_Permissions 以获取特定权限的详细信息。 示例代码如下:

//Set the password of owner to 'abc', and if non-owner open the document, he only read the document. Only when owner open the document with the right password, he can do anything with the document.

var test = {userPassword:'',ownerPassword:'abc',permission:0,cipher:'aes256',isEncryptMetaData:true,expected:true}

var pdfviewer = await pdfui.getPDFViewer();

var pdfdoc = await pdfviewer.getCurrentPDFDoc();

await pdfdoc.setPasswordAndPermission(test.userPassword,test.ownerPassword,test.permission,test.cipher,test.isEncryptMetaData);

*      注释权限

和如上的查看者注解权限一样,我们可以通过注解flags来配置注解的权限。示例代码如下:

var pdfViewer = await pdfui.getPDFViewer();

var pdfDoc = await pdfViewer.getCurrentPDFDoc();

var pdfPage = await pdfDoc.getPageByIndex(0);

//Add a square annotation and set the flag to locked.

var annots = await pdfPage.addAnnot({

    type:"square",

    rect:{

        left:300,

        right:400,

        bottom:300,

        top:400

    }

})

annots[0].setFlags(PDFViewCtrl.PDF.annots.constant.Annot_Flags.locked);

 

*      表单域权限

我们可以通过设置form field flag来配置Form Field的权限,详见PDFViewCtrl.PDF.form.constant.Field_Flag。示例代码如下:

var pdfViewer = await pdfui.getPDFViewer();

var pdfdoc = await pdfViewer.getCurrentPDFDoc();

 

await pdfdoc.loadPDFForm();

let form = pdfdoc.getPDFForm ();

 

var control = {pageIndex:0,fieldName:'textField1',fieldType:PDFViewCtrl.PDF.form.constant.Field_Type.Text,rect:{left: 100,right: 250,top: 430,bottom: 330}};

var ret = await form.addControl(control.pageIndex,control.fieldName,control.fieldType,control.rect);

var field = await form.getField('textField1');

await field.setValue('123');

await field.setFlags(PDFViewCtrl.PDF.form.constant.Field_Flag.ReadOnly);

相关内容

RDK Android 如何设置单页上下滑动翻页?

PDF转Word时,如何仅处理指定页面?

PDF和OFD如何批量互转?

Bitmap 类如何与其他的图像类互转?

打印管理PrintManager怎么判断文档打印是否完成?

软件如何打开嵌入在office文档中Adobe PDF图标

福昕高级PDF编辑器专业版如何在文档中嵌入一个3D模型

福昕高级PDF编辑器专业版如何实现对图片和文档内容添加马赛克

福昕高级PDF编辑器如何显示注释内容图标

福昕高级PDF编辑器如何添加和调整快速访问工具栏功能

推荐内容

RDK Android 如何设置单页上下滑动翻页?

PDF转Word时,如何仅处理指定页面?

PDF和OFD如何批量互转?

Bitmap 类如何与其他的图像类互转?

打印管理PrintManager怎么判断文档打印是否完成?

软件如何打开嵌入在office文档中Adobe PDF图标

福昕高级PDF编辑器专业版如何在文档中嵌入一个3D模型

福昕高级PDF编辑器专业版如何实现对图片和文档内容添加马赛克

福昕高级PDF编辑器如何显示注释内容图标

福昕高级PDF编辑器如何添加和调整快速访问工具栏功能

产品
  • 应用行业
  • 白皮书
开发支持
  • 开发中心
  • SDK文档资料

销售咨询:010-50951668

客服电话:0591-38509808

销售咨询
微信公众号

©2026 福建福昕软件开发股份有限公司 版权所有

隐私策略