此代碼是不完整的,但任何人誰遇到此之後,這基本上是如何從一個NSData流直接打印:
#define kMimeType @"application/pdf"
#define kPaperType @"A4"
- (void)printData:(NSData *)incomingPrintData {
CFArrayRef printerList; //will soon be an array of PMPrinter objects
PMServerCreatePrinterList(kPMServerLocal, &printerList);
PMPrinter myPrinter;
//iterate over printerList and determine which one you want, assign to myPrinter
PMPrintSession printSession;
PMPrintSettings printSettings;
PMCreateSession(&printSession);
PMCreatePrintSettings(&printSettings);
PMSessionDefaultPrintSettings(printSession, printSettings);
CFArrayRef paperList;
PMPrinterGetPaperList(myPrinter, &paperList);
PMPaper usingPaper;
//iterate over paperList and to set usingPaper to the paper desired
PMPageFormat pageFormat;
PMCreatePageFormatWithPMPaper(&pageFormat, usingPaper);
CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData((CFDataRef)incomingPrintData);
PMPrinterPrintWithProvider(myPrinter, printSettings, pageFormat, (CFStringRef)kMimeType, dataProvider);
}
(通過Core Printing Reference)
當心這個代碼缺乏內存管理,因此您將需要使用PMRetain()
和PMRelease()
函數以及CoreFoundation內存管理功能。
如果任何人都可以告訴我如何從OSX打印對話框中將數據導入到數據中,我可以在這種方法中使用,我將接受他們的回答而不是這個。也就是說,沒有使用碳功能。
已經找到一些有用的信息:[Core Printing Reference](http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CorePrintRef/Reference/reference.html) - `PMPrinterPrintWithProvider`看起來像它可能能夠完成這項工作,但如果任何人有另一個或希望更好的建議,請張貼它! – arrtchiu 2011-02-03 02:53:57