新闻资讯 | 控件产品 | 技术文章 | 购物车 | 合作伙伴 | 问题解答 | 电子简报 | PDF论坛 | 资源下载
您现在的位置:技术文章>PDF开发篇 首页|PDF应用篇|PDF开发篇|解决方案

循序渐进学习iTextSharp之十一(对文档进行加密)

发布日期:2006-5-11 作者:张卫蓬 出处:PDFHome

在前面的循序渐进学习iTextSharp的讲解中讲到,在打开文档前可以对文档的元数据进行设置,并且可以设置文档第一页的水印、页眉和页脚。在这节中我们主要讲解如何在打开文档前对文档进行加密。要实现在打开文档前对文档进行加密则要调用iTextSharpsetEncryption函数,函数原形如下。

public void setEncryption(boolean strength, String userPassword, String ownerPassword, int permissions);

参数strength是用来设置是40位加密还是128位加密。通过以下两个常量来设置

PdfWriter.STRENGTH40BITS: 40

PdfWriter.STRENGTH128BITS: 128 (只能够适用于Acrobat Reader 5.0以上)

参数userPassword和参数ownerPassword可以为空(null)或0长度的字符串,如果ownerPassword为空或0长度的字符串,则ownerPassword被一个随机字符串取代。

参数permissions设置是通过以下常量的或运算来实现的

PdfWriter.AllowPrinting : 允许打印

PdfWriter.AllowModifyContents :       允许修改内容

PdfWriter.AllowCopy :              允许拷贝

PdfWriter.AllowModifyAnnotations :         允许修改注释

PdfWriter.AllowFillIn :              允许填充表单

PdfWriter.AllowScreenReaders :       允许提取内容用于辅助工具

PdfWriter.AllowAssembly :              允许文档组合

PdfWriter.AllowDegradedPrinting :          允许低清晰度打印

这个函数的示例如下面两个程序所示

示例1

using System;
using System.IO;
 
using iTextSharp.text;
using iTextSharp.text.pdf;
 
public class Chap0109 {
    
         public static void Main() {
                  Console.WriteLine("Chapter 1 example 9: encryption 40 bits");
        
                  Document document = new Document(PageSize.A4, 50, 50, 50, 50);
                  try {
                       PdfWriter writer = 
PdfWriter.getInstance(document, new FileStream("Chap0109.pdf", FileMode.Create));
                       writer.setEncryption
(PdfWriter.STRENGTH40BITS, null, null, PdfWriter.AllowCopy);
                       document.Open();
                       document.Add(new Paragraph("This document is Top Secret!"));
                       document.Close();
                  }
                  catch (Exception de) {
                       Console.WriteLine(de.StackTrace);
                  }
         }
}
其中调用

writer.setEncryption(PdfWriter.STRENGTH40BITS, null, null, PdfWriter.AllowCopy);

的结果如Chap0109.pdf所示, 你可以打开文档不需要任何密码,但是你不能打印、修改文档,但允许拷贝文档。

示例2

using System;
using System.IO;
 
using iTextSharp.text;
using iTextSharp.text.pdf;
 
public class Chap0110 {
    
         public static void Main() {        
                  Console.WriteLine("Chapter 1 example 10: encryption 128 bits");
        
                  Document document = new Document(PageSize.A4, 50, 50, 50, 50);
                  try {
                       PdfWriter writer = PdfWriter.getInstance
(document, new FileStream("Chap0110.pdf", FileMode.Create));
                       writer.setEncryption(PdfWriter.STRENGTH128BITS, 
"userpass", "ownerpass", PdfWriter.AllowCopy | PdfWriter.AllowPrinting);
                       document.Open();
                       document.Add(new Paragraph("This document is Top Secret!"));
                       document.Close();
                  }
                  catch (Exception de) {
                       Console.Error.WriteLine(de.StackTrace);
                  }
         }
}
其中调用

writer.setEncryption(PdfWriter.STRENGTH128BITS, "userpass", "ownerpass", PdfWriter.AllowCopy | PdfWriter.AllowPrinting);

的结果Chap0110.pdf 所示当你打开这个文档的时候,要求你输入密码 (键入'userpass').

因为在加密的时候已经允许了打印所以你打开这个文档后可以打印这个文档.

 

发布人:管理员 【报告错误】·【推荐好友】·【打印文章】
相关评论 本文现有 0 条评论 评分人数: 0 平均分: 0
相关评论
用户名: 密  码:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
注意:请不要在评论中含与内容无关的广告链接,违者封ID
文章搜索
推荐文章
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
热门点击
一个简单的PDF文件结构的分析(22642)
PHP的FDF文档支持(16240)
用C#制作PDF文件全攻略(13664)
Word转换PDF格式的C#或(12180)
pdfMaker文章:PDF加(11670)
ITextRenderer学习(11576)
PDF文件加密仿真(11095)
怎样用iReport制作Web(10452)
iText PDF概述(1)(10003)
循序渐进学习iTextShar(9907)
热门评论
从pdf文档中提取出文本(8)
PDFlib开发:创建超文本元(2)
客户端自动打印PDF(Prin(2)
浅谈PDFlib中文输出(一)(2)
xml的转换之pdf 2 ((1)
xml的转换之pdf 1 (x(1)
PDF知识讲座(1)(1)
PDFBox使用简介(1)
使用正则表达式计算PDF文档的(1)
word转pdf(1)