ページ

2009年4月18日土曜日

WebKit検証(7) - WebArchive形式で保存

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

WebKitを使って Webアーカイブ形式の保存を試してみよう。

Webアーカイブ形式とは、Webページをファイルに保存する時に使われている形式の一種で、Safariからだと メニューから「別名で保存...」で保存できる。


保存したファイルは Safariで読み込み表示させることができる。



まずWebアーカイブ形式で保存するためのボタンを追加する。


ボタンが押されたら次の処理を実行する。

- (IBAction)saveWebArchive:(id)sender
{
WebDataSource* dataSource = [[_web_view mainFrame] dataSource];
WebArchive* webArchive = [dataSource webArchive];
NSData* data = [webArchive data];

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

[data writeToFile:path atomically:YES];
}


WebKitには Webアーカイブを扱うクラス WebArchive が用意されている、ここから#dataで NSDataをとりだし保存すればできあがり。


実行してみよう。ページを表示させボタンを押すとファイルが作成された。


これを Safariへドラッグ&ドロップしてみる。出た。



なお保存ファイルの拡張子を間違えると Webアーカイブ形式と認識されない。最初は間違えて .archive としたところ、アイコンは白紙で Safriへ渡しても表示することができなかった。