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へ渡しても表示することができなかった。
