2012-08-10 69 views
1

我知道使用CGPDFDocumentUnlockWithPassword來解鎖pdf,但它返回了CGPDFDocumentRef,如果我想用AirPrint打印它,它應該是NSData或url,但我不知道不知道如何將CGPDFDocumentRef轉換爲NSData對象或將其保存爲文件。有沒有人有想法解決這個案子?如何使用AirPrint打印已鎖定的pdf文件

回答

0

只需將源pdf的每一頁打印到新創建的CGPDFContext中,並將生成的PDF保存爲單獨的文件即可。 Principially,它應該是這樣的:

// 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,而不會出現任何問題。

+0

感謝您的答案,但我不想重繪的PDF context.I只想在CGPDFDocumentRef保存到光盤上或用它來打印 – VIRGIL 2012-08-20 02:46:01