此代码是不完整的,但任何人谁遇到此之后,这基本上是如何从一个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