iOS对PDF加密,解密

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 06:07 点击:
保护PDF内容
为了保护PDF内容,我们可以在辅助字典中指定一些安全选项并传递给CGPDFContextCreate。我们可以通过包含如下关键字来设置所有者密码、用户密码、PDF是否可以被打印或拷贝:
·kCGPDFContextOwnerPassword: 定义PDF文档的所有者密码。如果指定该值,则文档使用所有者密码来加密;否则文档不加密。该关键字的值必须是ASCII编码的CFString对象。只有前32位是用于密码的。该值没有默认值。如果该值不能表示成ASCII,则无法创建文档并返回NULL。Quartz使用40-bit加密。
·kCGPDFContextUserPassword: 定义PDF文档的用户密码。如果文档加密了,则该值是文档的用户密码。如果没有指定,则用户密码为空。该关键字的值必须是ASCII编码的CFString对象。只有前32位是用于密码的。如果该值不能表示成ASCII,则无法创建文档并返回NULL。
·kCGPDFContextAllowsPrinting:指定当使用用户密码锁定时文档是否可以打印。该值必须是CFBoolean对象。默认值是kCGBooleanTrue。
·kCGPDFContextAllowsCopying: 指定当使用用户密码锁定时文档是否可以拷贝。该值必须是CFBoolean对象。默认值是kCGBooleanTrue。
代码清单14-4(下一章)显示了确认PDF文档是否被锁定,及用密码打开文档。
 
 
 
在创建PDF文件设置密码
使用Quartz创建PDF与绘制其它图形上下文一下简单。我们指定一个PDF文件地址,设置一个PDF图形上下文,并使用与其它图形上下文一样的绘制程序。如代码清单13-4所示的MyCreatePDFFile函数,显示了创建一个PDF的所有工作。
注意,代码在CGPDFContextBeginPage和CGPDFContextEndPage中来绘制PDF。我们可以传递一个CFDictionary对象来指定页属性,包括media, crop, bleed,trim和art boxes。
 
 
 
 
 
 
 
void MyCreatePDFFile (CGRectpageRect, const char *filename)
 
{
 
    CGContextRef pdfContext;
 
    CFStringRef path;
 
    CFURLRef url;
 
    CFData boxData = NULL;
 
    CFMutableDictionaryRef myDictionary = NULL;
 
    CFMutableDictionaryRef pageDictionary = NULL;
 
 
 
    path = CFStringCreateWithCString (NULL, filename, kCFStringEncodingUTF8);
 
 
 
    url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, 0);
 
 
 
    CFRelease (path);
 
 
 
    myDictionary = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
 
 
 
    CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("MyPDF File"));
 
 
 
    CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("MyName"));
 
    CFDictionarySetValue(myDictionary, kCGPDFContextOwnerPassword, CFSTR("zhoumin"));
 
   
 
    CFDictionarySetValue(myDictionary, kCGPDFContextUserPassword, CFSTR("zhoumin"));
 
    ---------------------------------
 
    //zhoumin加入
 
 
 
 
    //kCGPDFContextOwnerPassword,kCGPDFContextUserPassword这两个选项是对pdf加密
 
     ---------------------------------
 
 
 
    pdfContext = CGPDFContextCreateWithURL (url, &pageRect,myDictionary);
 
 
 
    CFRelease(myDictionary);
 
 
 
    CFRelease(url);
 
 
 
    pageDictionary = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
 
 

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Lexical or Preprocessor Issue 'xxx.h
      • ios学习笔记(二)xcode 4.3.2下实现基本交互
      • ios版本的helloworld
      • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
      • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
      • IOS类似iphone通讯录TableView的完整demo【附源码】
      • UITableView一些方法
      • [iPhone中级]iPhone团购信息客户端的开发 (二)
      • iphone(object-c)内存管理(1)
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1