如何使用AirPrint打印锁定的pdf文件

时间:2012-08-10 04:11:29

标签: ios pdf passwords core-graphics

我知道使用CGPDFDocumentUnlockWithPassword解锁pdf,但它返回CGPDFDocumentRef,如果我想使用AirPrint打印它,它应该是NSData或网址,但是我不知道如何将CGPDFDocumentRef转换为NSData对象或将其另存为文件。有没有人有想法解决这个案子?

2 个答案:

答案 0 :(得分:0)

只需将源pdf的每个页面打印到新创建的CGPDFContext中,并将生成的pdf保存到单独的文件中即可。原则上,它应该是这样的:

// create PDFContext
NSURL* dstPath = [NSURL fileURLWithPath:pathInCachesFolder]
CGRect pageRect = CGRectMake(0,0,1024,1024); // example, use real page size of src document here
CGContextRef pdfContext = CGPDFContextCreateWithURL(dstPath, &pageRect, nil);

// use for loop here to repeat following stuff for each pdf page from the src pdf
CGPDFContextBeginPage(pdfContext, NULL);
CGContextDrawPDFPage(pdfContext, sourcePDFpageRef);
CGPDFContextEndPage(pdfContext);

// close pdfContext, saves dst file
CGPDFContextClose(pdfContext);
CGContextRelease (pdfContext);

这段代码只打印从源pdf到新创建的pdf的页面,并将pdf保存到dst路径。当然,您将从源文档中为每个页面重复绘图部分。之后你应该可以通过AirPrint打印pdf而不会有任何问题。

答案 1 :(得分:-1)

我已经解决了这个问题。你可以在这里获得信息:

How to pass a password to UIPrintInteractionController when using AirPrint to print a locked pdf?