我知道使用CGPDFDocumentUnlockWithPassword
來解鎖pdf,但它返回了CGPDFDocumentRef
,如果我想用AirPrint打印它,它應該是NSData
或url,但我不知道不知道如何將CGPDFDocumentRef
轉換爲NSData
對象或將其保存爲文件。有沒有人有想法解決這個案子?如何使用AirPrint打印已鎖定的pdf文件
1
A
回答
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,而不會出現任何問題。
-1
相關問題
- 1. AirPrint:直接將PDF文件打印到打印機
- 2. 如何使用Prolog打印PDF文件
- 3. 如何僞造AirPrint打印機
- 4. 從Android打印到AirPrint打印機
- 5. 使用pdf打印機打印文檔
- 6. 打印PDF文件
- 7. 如何使用tc打印PDF文件中的印地語字符pdf
- 8. 使用PHP打印PDF文件
- 9. 如何使用Python從橫向打印PDF文件到打印機?
- 10. 如何打印PDF文件在Java中與打印對話框
- 11. 如何從無線打印機打印PDF文件?
- 12. 如何在PDF文件上打印打印機型號
- 13. 如何在打印PDF時不使用Bluebeam打開revu PDF的
- 14. Ascii打印文件爲PDF
- 15. CUPS打印PDF文件
- 16. 從Qt打印PDF文件
- 17. 打印PDF文件與PDFSharp
- 18. 用於打印PDF文件的SDK
- 19. 如何在Opera中使用JavaScript打印PDF文件?
- 20. 如何使用python打印PDF文件到標準輸出?
- 21. 如何發送PDF文件打印對話框使用PHP?
- 22. 以編程方式打印PDF文件 - 指定打印機
- 23. iPhone 4.2的AirPrint打印作業失敗
- 24. 的iOS AirPrint功能 - 打印多個URL
- 25. System.IO.IOException:鎖定PDF文件
- 26. 如何使用不帶打印機的默認打印機(VB Net)打印PDF
- 27. 使用PHP嵌入pdf文件並打印到打印機使用PHP
- 28. 打印傳遞給javascript的文件引用window.print()/使用javascript打印pdf
- 29. 用Java打印Microsoft Office和PDF文件
- 30. 使用html2pdf打印PDF格式文件中的數據作爲PDF文件
感謝您的答案,但我不想重繪的PDF context.I只想在CGPDFDocumentRef保存到光盤上或用它來打印 – VIRGIL 2012-08-20 02:46:01