Mac OS X:直接从文件/ URL打印?

时间:2012-06-21 13:35:09

标签: macos cocoa printing

我想编写一个可以从URL打印页面的litte实用程序,URL会提供一个标准文件(如pdf或jpg图片),我只想在我的cocoa应用程序中打印它而不显示任何对话,这可能吗?我在文档中找不到任何相关内容,除了告诉我使用该文件构建视图然后打印此视图但这是否真的有必要?

任何帮助表示感谢。

谢谢, 菲利普

1 个答案:

答案 0 :(得分: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)。