ページ

2009年8月3日月曜日

WPSU(8) - Webページのスクリーンショットを取る

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

Webページのスクリーンショットを取る。

- [WebController capturePage:] を用意し、InterfaceBuilderでキャプチャボタンのターゲットに指定する。5月ぐらいに検証したときのコードをそのまま貼付けて使った。

WebController.m

- (IBAction)capturePage:(id)sender
{
// (0) ready for capture
[_web_window orderOut:nil];

// (1) filename
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSDesktopDirectory, NSUserDomainMask, YES);
NSString* path = [NSString stringWithFormat:@"%@/test.png",
[paths objectAtIndex:0], nil];

// (2) size
NSRect rect = [[[[_web_view mainFrame] frameView] documentView] bounds];
[_web_window setContentSize:rect.size];

// (3) capture
[[[[_web_view mainFrame] frameView] documentView] lockFocus];
NSBitmapImageRep* bitmap_rep = [[NSBitmapImageRep alloc] initWithFocusedViewRect:rect];
[[[[_web_view mainFrame] frameView] documentView] unlockFocus];

NSData* data = [bitmap_rep representationUsingType:NSPNGFileType
properties:[NSDictionary dictionary]];
[data writeToFile:path atomically:YES];

// (4) restore window
[_web_window setFrame:[self webWindowFrame] display:YES];
[_web_window makeKeyAndOrderFront:nil];
}


動かしてみる。ページが表示されたら右上のボタンを押す。


するとデスクトップに test.png が作成される。



開くと該当ページのスクリーンショット画像が入っているのがわかる。



ソース:WebPageScreenshotUtility-02.zip