次は PDF形式で保存してみる。
NSViewには #dataWithPDFInsideRect なんてそのものずばりのメソッドが用意されているのでこれを使ってみよう。以前の画像を保存するコードを流用してちょっぴり書き換えるだけ。
- (IBAction)savePDF:(id)sender
{
NSView* view = [[[_web_view mainFrame] frameView] documentView];
NSRect rect = [view bounds];
NSData* outdata = [view dataWithPDFInsideRect:rect];
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSDesktopDirectory, NSUserDomainMask, YES);
NSString* path = [NSString stringWithFormat:@"%@/test.pdf",
[paths objectAtIndex:0], nil];
[outdata writeToFile:path atomically:YES];
}
InterfaceBuilderでPDFボタンを追加し上記メソッドを呼び出すようにする。

実行してみよう。PDFボタンを押すと PDFファイルが生成された。

PDFファイルだ。

文字の情報もちゃんと持っていてマウスで範囲選択できる。

リンクも有効だ。

縦に長いページを PDFへ落とすと、1ページの PDFになる。
これを保存すると:

こうなる。

左フレームはどこかへ(?)行ってしまった。