14

ファイルのQuickLookプレビューを表示するNSView、NSImage、CGImageRefなどを取得する方法(公開またはその他)を探しています。基本的にQLThumbnailImageCreate()と同等ですが、プレビュー用です。

私が見つけたパブリックAPIはこれをサポートしていません。サムネイル画像またはQLPreviewPanelを作成できます。パネルには実際にはクイックルックプレビューが表示されますが、プレビューの外観にアクセスして他のビューに埋め込むことも、一度に複数のプレビューを表示することもできません。

背景として、HTMLの<img>タグのように、インラインで表示する必要がある他のファイルへのリンクをユーザーが埋め込むことができるアプリを作成しています。JPGやPDFなどの画像の場合、何を表示するかを簡単に理解できます。他の形式の場合は、クイックルックを使用してファイルの内容の見栄えの良い視覚的表現を生成すると思いました。このようにして、私のアプリケーションでサポートされている一連の形式を簡単に拡張できます(新しいクイックルックジェネレーターをダウンロードするだけです)。

4

1 に答える 1

5

しばらく前にこれを広範囲に調査しましたが、簡単な方法を見つけることができませんでした。ファイルの種類に応じて、QuickLook はさまざまな種類の出力を生成します。たとえば、iWork ファイルの場合、ジェネレーターは WebView に表示する HTML を作成します。他のタイプの場合、さまざまなタイプのデータが返されます。

コードを使用することはありませんでしたが、掘り下げたコードと、便利なプライベート API をいくつか示します。

id QLPreviewCreate(CFAllocatorRef allocator, CFURLRef url,  CFDictionaryRef options);
id QLPreviewCopyBitmapImage(id preview);
id QLPreviewCopyData(id preview);
NSString* QLPreviewGetPreviewType(id preview);
id QLPreviewCopyProperties(id preview);

- (NSData *)getDataForFile:(NSString *)path
{

    NSURL *fileURL = [NSURL fileURLWithPath:path];

    id preview = QLPreviewCreate(kCFAllocatorDefault, fileURL, 0);

    if (preview)
    {
        NSString* previewType = QLPreviewGetPreviewType(preview);

        if ([previewType isEqualToString:@"public.webcontent"])
        {
            // this preview is HTML data
            return QLPreviewCopyData(preview);
        }
        else
        {
           NSLog(@"this type is: %@", previewType);
           // do something else
        }

    }

    return nil;
}
于 2010-01-31T04:49:58.763 に答える