- 浏览: 89405 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
ma_029619:
的确,打不开
用 UITableView 进行多选的代码例子 -
janedoneway:
不错,学习了,同时问一下,动画结束后同时隐藏图片,要怎么做?你 ...
[iOS]iPhoto的删除动画(转) -
cn23snyga:
博主的POST方法2.1中,怎么是 setHTTPMethod ...
[iOS]网络编程专题:发送Http请求(POST GET)的方法 -
bear1122ccc:
文件坏了。
用 UITableView 进行多选的代码例子
保护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);
boxData = CFDataCreate(NULL,(const UInt8 *)&pageRect, sizeof(CGRect));
CFDictionarySetValue(pageDictionary, kCGPDFContextMediaBox, boxData);
CGPDFContextBeginPage (pdfContext, &pageRect);
myDrawContent (pdfContext);
CGPDFContextEndPage (pdfContext);
CGContextRelease (pdfContext);
CFRelease(pageDictionary);
CFRelease(boxData);
}
PDF解密
------------------------------------------------------------------
CGPDFDocumentRef pdf;
pdf = CGPDFDocumentCreateWithURL(pdfURL);
if (pdf == NULL) {
NSLog(@"can't open '%@'", pdfURL);
CFRelease (pdfURL);
}
if (CGPDFDocumentIsEncrypted (pdf)) {//判断pdf是否加密
if (!CGPDFDocumentUnlockWithPassword (pdf, "")) {//判断密码是否为""
NSString *password = @"zhoumin";
if (password != NULL) {
if (!CGPDFDocumentUnlockWithPassword (pdf, [password UTF8String]))
//使用password对pdf进行解密,密码有效返回yes
NSLog(@"invalid password.");
}
}
}
if (!CGPDFDocumentIsUnlocked (pdf)) {//判断pdf是否打开状态
NSLog(@"CGPDFDocumentIsUnlocked");
}
if (CGPDFDocumentGetNumberOfPages(pdf) == 0) {
NSLog(@"CGPDFDocumentGetNumberOfPages == 0");
}
------------------------------------------------------------------
苹果官方文档
发表评论
-
[iOS]iPhoto的删除动画(转)
2012-03-05 09:36 3108iPhoto 中想删除某张照片时,点击删除键,就能看到照 ... -
testBubble_泡泡聊天
2012-02-29 11:38 1109testBubble_zhou_min_泡泡聊天 ... -
BigHeadTip_谷歌地图大头针
2012-02-29 11:34 1580BigHeadTip_zhou_min_谷歌地图大头针 ... -
FFDownloadManager_alertview文件下载器
2012-02-29 11:28 1013FFDownloadManager_zhou_min_aler ... -
苹果官网--iPhone应用程序编程指南
2012-02-29 11:21 975苹果官网-zhou_min-iPhone应用程序编程指南 ... -
iOS之GCD
2012-02-12 21:35 0GCD之dispatch queue iOS中 ... -
循环滚动
2012-02-02 15:19 0循环滚动 -
自定义AlertView(多种色彩)
2012-02-02 14:50 1117自定义AlertView(多种色彩) ... -
用 UITableView 进行多选的代码例子
2012-02-02 14:19 1532用 UITableView 进行多选的代码例子 ... -
QQ风格的UITableView
2012-02-02 14:00 1253QQ风格的UITableView ... -
GLpaint画图
2012-02-01 23:50 1803GLpaint画图 -
滑动弹出菜单的代码例子
2012-02-01 23:31 1130滑动弹出菜单的代码例子可在应用中实现方便美观的按钮收放效果。如 ... -
UIAlertTableView 里进行单选和多选的代码例子
2012-02-01 23:22 1026UIAlertTableView 里进行单选和多选的代码例子 ... -
自定义控件用法和一些常用页面效果
2012-02-01 22:23 975自定义控件用法和一些常用页面效果 原文:http:// ... -
viewDidUnload 和 dealloc 的区别
2012-01-30 10:57 7397对于iphone开发人员来说,内存管理是极为重要的技巧,哪怕程 ... -
第二个iPhone应用程序:“Say Hello”
2012-01-30 10:49 1258项目需求 写一个iPhone应用程序,要求可以输入名字, ... -
[iOS]网页保存为png
2012-01-20 10:48 0保存 -
[iOS]iOS截屏
2012-01-19 17:22 2690UIGraphicsBeginImageContext ... -
[iOS]AES加密在iOS上面的实现
2012-01-16 13:38 9097Encryption.h文件 // // En ... -
[iOS]Objective-C利用协议实现回调函数(类似java的回调函数)
2012-01-01 13:18 7831在编写iphone开发时,最 ...
相关推荐
IOS RSA加密 分段解密
iOS RSA加密与解密Demo:https://github.com/fuaiyi/RSAEncryption博客:http://www.jianshu.com/u/b1d7ade703b4
ios开发,如何使用Tea加密解密,以及加密后存储数据,如何正确解密
IOS AES加密解密
iOS AES128加密解密代码完美和硬件适配 和蓝牙底层可以互通
对数据进行加密和解密 AES加密有多种算法模式,下面提供两套模式的可用源码: 一、CBC(Cipher Block Chaining,加密块链)模式 二、ECB(Electronic Code Book,电子密码本)模式 其中CBC模式下,有.NET的源码。而...
ios NSData NSString AES加密解密算法源码
java、Android、javaScript(可以改成vue)、ios AES加密通用,可在服务端加密,客户端解密,也可在客户端加密,服务端解密;由于csdn会自动把积分改到50,可以发邮件到1622007541@qq.com 免费送
这个可以用做与android php iOS 三个平台,des加解密,支持中文 英文,长字符串,又问题,欢迎留言
AES加密解密算法 iOS和Android完美实现
des加密解密一套,有JAVA和IOS平台的,相互可以解密。工具类
iOS openssl加密解密DEMO
本工程可以直接使用,而且与IOS,...对数据进行加密和解密 AES加密有多种算法模式,下面提供两套模式的可用源码: 一、CBC(Cipher Block Chaining,加密块链)模式 二、ECB(Electronic Code Book,电子密码本)模式
AES加密在iOS上面的实现,仅供学习参考,从别人那借鉴来的!
一个Android IOS Java通用的AES128加密解密Demo、这个Demo可以满足用Java开发的后端接口、但是如果...今天给大家分享一个比较强大的Demo、可以同时支持Android IOS Java .NET的加密解密的算法Demo、希望对大家有用。
加密解密
iOS RSA 加密解密