2012-06-21 45 views
3

我想編寫一個litte實用程序,它可以從一個URL打印一個頁面,該URL將提供一個標準文件(如pdf或jpg圖片),我只想從我的可可應用程序中打印此信息而不顯示任何信息對話框,這可能嗎?在文檔中我找不到任何關於這個的東西,除了一個事情告訴我用該文件構建一個視圖,然後打印這個視圖,但這真的有必要嗎?Mac OS X:直接從文件/ URL打印?

任何幫助表示讚賞。

感謝, 菲利普

回答

3

你並不需要顯示NSView才能打印。
只需編程創建NSView並將其傳遞給NSPrintOperation

示例代碼:

// Get Print Info 
NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo]; 

// Printing Text 
NSRect textRect = NSMakeRect(0,0,100,50); 
NSTextView *theTextView = [[NSTextView alloc] initWithFrame:textRect]; 
[theTextView setString: @"Hello World"]; 
NSPrintOperation *textPrint = [NSPrintOperation printOperationWithView:theTextView printInfo:printInfo]; 
[textPrint setCanSpawnSeparateThread:YES]; 
[textPrint runOperation]; 

// Printing Picture 
NSImage *pic = [[NSImage alloc] initWithContentsOfFile: @"/Users/Anne/Desktop/Sample.png"]; 
NSRect picRect = NSRectFromCGRect(CGRectMake(0, 0, pic.size.width, pic.size.height)); 
NSImageView *imageView = [[NSImageView alloc] initWithFrame:picRect]; 
[imageView setImage:pic]; 
NSPrintOperation * picPrint = [NSPrintOperation printOperationWithView:imageView printInfo:printInfo]; 
[picPrint setCanSpawnSeparateThread:YES]; 
[picPrint runOperation]; 

對於PDF文檔使用PDFView(添加Quartz框架)。

你也可以考慮使用WebView(添加WebKit框架)。
WebView支持多種格式,使格式變得輕而易舉(HTML)。