1. 首页
  2. Foxit PDF SDK(Windows版)
  3. 如何设置PDF文档权限

如何设置PDF文档权限

由于某些特殊原因,我们需要限制对PDF文档 访问。Foxit PDF SDK 提供了各种加密方法来控制对PDF文档的访问,其中还提供了 “permission” 来限制对PDF的操作。我们现在就来了解一下“permission”的设置。详细可查看Foxit PDF SDK包中的examples\simple_demo\security demo.

我们以标准加密为例。先看下函数原型,第2个参数就是用于设置permission:

再来看看如何调用。

// Do encryption.
 StdSecurityHandler handler;
 StdEncryptData encrypt_data(true, 0xfffff1e0, SecurityHandler::e_CipherAES, 16);
 handler.Initialize(encrypt_data, String("user"), String("owner"));
 doc.SetSecurityHandler(handler);

permission是一串32位的16进制数,感觉有点懵,要如何设置对应的权限呢?

先介绍下这串32位16进制数,第13~32位为保留位,默认设置为1;第7~8位也是保留位,默认设置为1;第1~2位也是保留位,默认设置为0。接下来就进行设置吧。

  • 设置“复制内容用于辅助工具”权限,我们要设置第10位为1,前12位的二进制数为:001011000000,转换为16进制数为0xfffff2c0。看下图详细说明。

 

  • 设置 “内容复制” 权限,Phantom中设置了 “内容复制“ 权限默认将 “复制内容用于辅助工具”设上,我们也一样吧。对应的我们要设置第5位与10位为1,前12位的二进制数为:001011010000,转换为16进制数为 0xfffff2d0 。如下图。
  • 设置允许 “打印” 权限,打印权限有分为高分辨率与低分辨率。高分辨率我们要设置第3位与12位为1,前12位的二进制数为:100011000100,转换为16进制数为 0xfffff8c4。低分辨率我们只要设置第3位为1,前12位的二进制数为:000011000100,转换为16进制数为 0xfffff0c4。看下图详细说明:
  • 设置允许 “组合文档” 权限。 我们要设置第11位为1,前12位的二进制数为:010011000000,转换为16进制数为 0xfffff4c0。看下图详细说明。
  • 设置允许 “填写表单与签名” 权限。 我们要设置第9位为1,前12位的二进制数为:000111000000,转换为16进制数为 0xfffff1c0。看下图详细说明。
  • 设置允许 “注释,填写表单与签名” 权限。 我们要设置第6位与第9位为1,前12位的二进制数为:‭000111100000‬,转换为16进制数为 0xfffff1e0。详细设置如下:
  • 设置允许 “ 除了导出页面 ”权限。我们要设置第4、6与9位为1,前12位的二进制数为:‭000111101000‬,转换为16进制数为 0xfffff1e8。详细设置如下:
  • 如果要设置允许“页面导出“”权限,需要将所有权限都开启,即0xfffffffc。

permission更详细的说明可参考 PDF reference 1.7, Page 123~124.

更新于 2020年8月7日

这篇文章有用吗?

相关文章