2011-09-23 47 views
4

我有一个简单的需要使用Cocoa打印的项目列表。我有一个半熟的解决方案,它使用一个带有自定义drawRect:方法的NSView,但它相当复杂并且不容易维护。使用Cocoa打印本地HTML

我想要的是一个HTML字符串(可以从列表中轻松构建),可以嵌入到一次性WebView中,然后打印。

假设我有一个简单的NSString像:

NSString *htmlString = @"<b>Test</b>"; 

什么是创建一个web视图显示这些内容的最简单的方法?我试着下面的代码,但它会导致一个空白页:

WebView *webView = [[WebView alloc] init]; 
NSString *dir = @"/Users/Me/Desktop/"; 
NSString *fileUrl = [dir stringByAppendingPathComponent:@"Temp_Print.html"]; 

NSString *htmlString = @"<b>Hi!</b>"; 
[[htmlString dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileUrl atomically:YES]; 

[[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:fileUrl]]]; 
[webView setFrame:NSMakeRect(0, 0, 500, 500)]; 
NSPrintOperation *po = [NSPrintOperation printOperationWithView:webView printInfo:pi]; 

[pi release]; 
[po runOperation]; 

回答

4

的那些你解决问题,另外一个要求它之后!

运行循环需要迭代以便内容实际加载。我简单地完成在帧载荷委托方法运行的实际打印操作:

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame { 
    ... 
} 

Source