2011年4月4日月曜日

PDFkit PDFSelection

PDFドキュメントが必ずアウトラインをもっているわけでなく、そういう場合はアウトラインがないよ、と表示する専用のViewを用意した。


具体的に書かれていたわけではないけれど、デベロッパドキュメントではそれらしい書き方がされていた、と。

アウトラインはそれでいいわけだが、こういうドキュメントで検索をするとこうなってしまう。

検索結果の2番目の列には、検索文字列が含まれているアウトラインの見出しを入れる仕様だから(ま、これもデベロッパドキュメントどおりなんだけど)仕方がない。

あまりにも味気ないので、Skimのように検索文字列の前後を表示するにはどうするのか調べてみた。

PDFSelectionにそれらしいメソッドがないか探してみたら、あったあった。便利なメソッドがちゃんと用意されているもんだなあ。
extendSelectionAtEnd:
こいつが検索文字列を後方に伸ばしてくれるメソッド。前方に伸ばすのはextendSelectionAtStart:。

実際に試してみたところ、前方にも後方にも伸ばしてみると


こうなった。うーむ、ちょっと見づらいなあ。で、後方に伸ばすだけにしてみたらいい具合。


コードはこうなる。

PDFSelection *copy=[[searchResults objectAtIndex:row] copy] ;
//[copy extendSelectionAtStart:5];
[copy extendSelectionAtEnd:15];
NSString *label=[copy string];
return label;
[copy release];
コメントアウトしているのが前方に伸ばしている部分。もう少し「伸ばした部分」の文字列によって処理を変えてやれば見た目の美しい結果になるような気もする。でも、できたからまあいいか、と。
もちろんど素人なので、Skimのソースを参照した結果である。でもなんとなくうれしい。

サイドパネル関連はこんなところかなー。次はブックマーク関連の調査に入るつもり。

0 件のコメント:

コメントを投稿