2011-09-23 36 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