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