2011年3月14日月曜日

PDFView(PDFkit)

PDFkitをさわり始めている。これがなかなかおもしろい。ぶっ飛びで簡単にPDFを表示できる、と、とあるblogに書いてあったけれど本当にぶっ飛びに簡単だった。

ADCのPDFkit関係のサンプルは
・PDFKitLinker2
・Link Snoop
・PDF Annotation Editor
・PDF Calendar
という4つが現在のところ主なものらしい。このうち、昨日あたりからPDF Annotation Editorのソースを読んでいる。Annotationはプレビュー.appでいうところの「注釈」で、PDFにあれこれ上から書き込める機能。自分としてはそんな機能は全然必要としていないので、空のプロジェクトから自分で作っていく方法を選んだ。

本日の成果。


わずか1時間程度で、見た目だけはプレビュー.appと変わらない(というのは言い過ぎか)PDFビューワができてしまう。いちおう、プレビュー.appではないよ、という証拠?画像も。


本日やったこと。

ドキュメントタイプの指定

プロジェクトを作るときにドキュメントの拡張子を「pdf」にする。

Quatrz.frameworkをプロジェクトに追加

プロジェクトのプロパティで追加できる。

コード追加
本日書いた、というかほとんどコピペだけど、とりあえず追加したコードはこれだけ。

- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
    [super windowControllerDidLoadNib:aController];
    PDFDocument *pdfDoc;
    
    pdfDoc = [[[PDFDocument alloc] initWithURL:[self fileURL]] autorelease];
    [pdfView setDocument: pdfDoc];
    // Add any code here that needs to be executed once the windowController has loaded the document's window.
}
[super window...]までがあらかじめ書かれている部分で、それ以下のpdfDoc云々の2行だけ。これはデベロッパドキュメントの「PDF Kit Programming Guide」からほぼコピペ。

ドキュメントウィンドウ
contentViewだけのwindowに、以下のようにSplitViewをはり、その上にPDFViewとPDFThumbnailViewを配置する。


で、PDFThumbnailViewから右クリックで例の矢印をPDFViewに伸ばしていくと


あらかじめ設定されているpdfViewというOutletが現れるので、それで接続する。


この接続をするだけで、PDFのThumnailが全自動でできあがる。これにはびっくりした。Thumbの大きさは128x128にしてある。

AppDelegate
ただしこのままだと、アプリ起動時に空のウィンドウが表示されてしまって気持ちが悪い。
PDF Annotation EditorではAppDelegate.mで
- (BOOL) applicationShouldOpenUntitledFile: (NSApplication *) application
{
    return NO;
}

とすることでこれを抑止している。

しかし・・・Xcode4で新たしいプロジェクトをつくると、3の時のようにこのAppdelegateを自動で作ってくれなくなった。(そのかわりというかなんというか、git init が全自動で行われる)

Delegateってどうやって作るのよ?と調べて自分でやってみるのにけっこう時間がかかってしまった。(^^;)MainMenu.xibのほうにNSObjectを作って、そのclassをAppDelegateにする、ということでいいようだ。

本当にわずかなコードでPDFビューワができてしまった。ただし、WindowControllerは作っていない。検索とかの機能をつけるなら、WiodowControllerをはさんだほうがいいようだ。以下は明日。

0 件のコメント:

コメントを投稿