OS X / iOS:如何创建无法打印的PDF?

时间:2012-09-20 13:33:32

标签: objective-c cocoa pdf encryption cgpdfcontext

我想创建一个无法打印的PDF文档。我正在使用Quartz框架。这就是我所做的(做空):

    PDFDocument *pdfDocument = ...

    NSMutableDictionary *options = [[NSMutableDictionary alloc] init];
    [options setValue:@"test-password" forKey:(NSString *)kCGPDFContextUserPassword];
    [options setValue:@0 forKey:(NSString *)kCGPDFContextAllowsPrinting];

    [pdfDocument writeToFile:savePath withOptions:options];

但我仍然可以使用Preview.app打印生成的文件,而无需输入密码。

如果我设置 kCGPDFContextOwnerPassword ,则会使用密码(但不是打印功能)锁定文档

我做错了什么?

谢谢!

CGPDFContext Reference

2 个答案:

答案 0 :(得分:2)

使用 CFMutableDictionaryRef 代替 NSMutableDictionary 之后,它终于有效了。不要问我为什么......:D

答案 1 :(得分:0)

kCGPDFContextAllowsPrinting值设为kCFBooleanFalse,但此密钥的default值为kCFBooleanTrue

文档是否允许使用用户密码解锁时进行打印。