在日常工作中,人们通常通过加密PDF文档的方式来保护PDF文档。不管是公司还是个人,使用PDF加密术来设置一些权限是必不可少的。为了使PDF文档既可读又不能被未授权的用户所更改,一份PDF文档往往需要两个密码:所有者密码和用户密码。本文我将给大家分享如何使用一个免费版PDF组件—Free Spire.PDF,以C#/VB.NET编程的方式来快速地加密PDF文档。

这个免费版的PDF组件是由E-iceblue公司开发的,它可以通过设置所有者密码和用户密码来加密PDF文档。所有者密码可以完全访问PDF文档,例如重置密码和权限;用户密码虽然可以允许用户打开对应的PDF文档,但也会受制于所有者设置的一些权限。

在加密方案中,命名空间Spire.PDFDocument.Security下的PDFSecurity类的实例对象用来设置所有者密码和用户密码。

如果您对该组件感兴趣,可以从官网下载,组件下载安装后,再加载您的PDF文档,然后就可以保护它了。

接下来我将介绍如何以C#/VB.NET编程的方式来加密PDF文档:

步骤1:新建一个PDF文档对象(因为我没有现有的PDF文档,所以就新建了一个)

[C#]

      PdfDocument doc = new PdfDocument();

步骤2:通过“Spire.Pdf.Security.PdfEncryptionKeySize”的枚举值来设置密钥长度。密钥长度有3种可用的类型:Key128Bit, Key256Bit 和 Key40Bit,您可以使用其中的任意一种。

[C#]

       doc.Security.KeySize = PdfEncryptionKeySize.Key256Bit;

步骤3:通过设置所有者密码和用户密码来加密PDF文档。注意:您所设置的密钥长度不能超过可用的密钥长度。

[C#]

       doc.Security.OwnerPassword = "e-iceblue";
doc.Security.UserPassword = "pdfcomponent";

步骤4:指定用户密码的访问权限。在此方案中,有9种可用的权限,请查看下图:

[C#]

       doc.Security.Permissions = PdfPermissionsFlags.Print | PdfPermissionsFlags.CopyContent;

步骤5:保存文档

[C#]

      doc.SaveToFile("result.pdf",FileFormat.PDF);

项目运行后,当你打开这个加密的PDF文档时就需要输入密码了。请看下面的效果截图:

C#完整代码:

using Spire.Pdf;
using Spire.Pdf.Security;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace __encryption
{
class Program
{
static void Main(string[] args)
{
PdfDocument doc = new PdfDocument();
doc.Security.KeySize = PdfEncryptionKeySize.Key256Bit;
doc.Security.OwnerPassword = "e-iceblue";
doc.Security.UserPassword = "pdfcomponent";
doc.Security.Permissions = PdfPermissionsFlags.Print | PdfPermissionsFlags.CopyContent;
doc.SaveToFile("result.pdf", FileFormat.PDF);
}
}
}

VB.NET完整代码:

Imports Spire.Pdf
Imports Spire.Pdf.Security
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text Namespace __encryption
Class Program
Private Shared Sub Main(args As String())
Dim doc As New PdfDocument()
doc.Security.KeySize = PdfEncryptionKeySize.Key256Bit
doc.Security.OwnerPassword = "e-iceblue"
doc.Security.UserPassword = "pdfcomponent"
doc.Security.Permissions = PdfPermissionsFlags.Print Or PdfPermissionsFlags.CopyContent
doc.SaveToFile("result.pdf", FileFormat.PDF)
End Sub
End Class
End Namespace

希望这篇文章能给您带来一定的帮助。感谢您的浏览。

关于C# 加密、解密PDF的视频教程,可点击链接地址查看:

http://v.youku.com/v_show/id_XNDAyNzg3MTk5Ng==.html?spm=a2hzp.8244740.0.0

C#, VB.NET如何加密PDF文档的更多相关文章

  1. [Swift通天遁地]七、数据与安全-(8)创建普通PDF文档和加密PDF文档

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  2. 解决加密PDF文档无法复制文字的问题

    有的时候在网络上搜索到一篇心仪的PDF文档,想复制其中内容时提示无法复制. 如果只想摘抄其中部分文字内容,可以使用Firefox浏览器打开这篇加密文档. Firefox浏览器自带PDF插件,打开后即可 ...

  3. Java 加密、解密PDF文档

    本篇文章将介绍通过Java编程来设置PDF文档保护的方法.我们可以设置仅用于查阅文档的密码,即该通过该密码打开文档仅用于文档阅读,无法编辑:也可以设置文档编辑权限的密码,即通过该密码打开文档时,文档为 ...

  4. C# 加密、解密PDF文档(基于Spire.Cloud.SDK for .NET)

    Spire.Cloud.SDK for .NET提供了接口PdfSecurityApi可用于加密.解密PDF文档.本文将通过C#代码演示具体加密及解密方法. 使用工具: Spire.Cloud.SDK ...

  5. 常用PDF文档开发库

    C++库: 1,PDF类库 PoDoFo   http://podofo.sourceforge.net/  PoDoFo 是一个用来操作 PDF 文件格式的 C++ 类库.它还包含一些小工具用来解析 ...

  6. IText实现对PDF文档属性的基本设置

    一.Itext简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文 ...

  7. 快速解决PDF文档加密不能打印问题_百度经验

    快速解决PDF文档加密不能打印问题_百度经验     快速解决PDF文档加密不能打印问题         |        浏览:182        |        更新:2014-01-06 1 ...

  8. python实用小技能分享,教你如何使用 Python 将 pdf 文档进行 加密 解密

    上次说了怎么将word转换为pdf格式 及 实现批量将word转换为pdf格式(点击这里),这次我又get到一个新技能–使用 Python 将 pdf 文档进行 加密 解密,哈哈哈 希望帮到更多人! ...

  9. 利用Java动态生成 PDF 文档

    利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...

随机推荐

  1. 从Angular2路由引发的前后端路由浅谈

    笔者的学习进度比较慢,直到两年以前写的网站都还是以服务端为主导的,即网站的所有视图都由服务器视图模板来渲染,笔者使用的是 DotNet MVC,开发套路就是在Controller里面写Action,在 ...

  2. Javascript基本语句

    1.单行语句是大家用的最多的,下面讲讲复合语句的用法. 用一对花括号括起来,处理的时候,可以用单句来对待.这样做的好处是避免复合语句中语句互相干扰执行. 语法如下: { var x=1111: var ...

  3. HTML第一课

    <标签名 属性>内容</标签名> <标签/> 静态网页与动态网页的区别:是否从数据库提取数据相对路径跟绝对路径../代表高一级的&nbsp牛逼的空格< ...

  4. UITableView 编辑模式(增加-删除-移动---自定义左滑 title)

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  5. storm1.0节点间消息传递过久分析及调优

    序:最近对storm平台系统进行性能检测发现偶尔会出现oncebolt向另一个twobolt发送数据后,twobolt要500毫秒后才接收到进行处理.这里简单说增大twobolt的并行度即可解决,但是 ...

  6. SEO-外部链接类型以及标准

    外部链接 外链的作用:宣传你的网站 相信大家都听过"内链为王,外链为皇"这句话,不管这句话对不对,从这句话上面,我们都能体会到外链的重要性. 外链类型: 1.博客 2.论坛 3.分 ...

  7. SQL函数和SQL Server2008

    1.绝对值   SQL:select abs(-1) value  O:select abs(-1) value from dual  2.取整(大)   S:select ceiling(-1.00 ...

  8. 2017-3-20 HTML 基础知识

    HTML的定义:HTML是一门编程语言的名字:超文本标记语言(Hyper Text Mark-up Language ),就是超越了文字的范畴,除了文字还可以有图片.视频.音频.动画.特效.表格.链接 ...

  9. 开源的.NET定时任务组件Hangfire解析

    项目慢慢就要开工了,很多园友都在问这个事情,看来大伙对这事很上心啊,事情需要一步步的来,尽量写出一个我们都满意的项目.以前每次在博客前面都会扯淡一下,不过很多人都抱怨这样做不好,加上我这人扯淡起来就停 ...

  10. SpringMVC REST 风格请求介绍及简单实践

    简介 REST 即 Representational State Transfer.(资源)表现层状态转化.是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越 ...