2

这个问题真的很简单。我想模拟默认 OSX 的 Audio QuickLook 插件的行为,我需要 QuickTime Player,它通常位于预览窗口的底部。我还希望在使用我的自定义插件时,我还可以听到我当前正在预览的文件的声音。

下面是一些代码(来自 GeneratePreviewForURL.m 文件)可能有助于更好地理解上下文:

OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options)
{
    @autoreleasepool {

        if (QLPreviewRequestIsCancelled(preview)) return noErr;

        NSMutableString *html=[[NSMutableString alloc] init];
        NSDictionary *props;
        NSData *imageData=[NSData dataWithContentsOfFile:@"/tmp/IMAGE.png"];

        props=@{
            (__bridge NSString *)kQLPreviewPropertyTextEncodingNameKey:@"UTF-8",
            (__bridge NSString *)kQLPreviewPropertyMIMETypeKey:@"text/html",
            (__bridge NSString *)kQLPreviewPropertyAttachmentsKey:@{
                    @"IMAGE":@{
                            (__bridge NSString *)kQLPreviewPropertyMIMETypeKey:@"image/png",
                            (__bridge NSString *)kQLPreviewPropertyAttachmentDataKey: imageData,
                            },
                    },
            };

        [html appendString:@"<html>"];
        [html appendString:@"<body>"];
        [html appendString:@"<img src=\"cid:IMAGE\">"];
        [html appendString:@"<br><br>"];
        //...
        [html appendString:@"</body>"];
        [html appendString:@"</html>"];

        QLPreviewRequestSetDataRepresentation(preview,(CFDataRef)[html dataUsingEncoding:NSUTF8StringEncoding],kUTTypeHTML,(CFDictionaryRef)props);
    }

    return noErr;
}
4

1 回答 1

0

<audio>使用 OSX 10.6.8 上的 Xcode 4.2,只需使用标签并使用其属性加载文件即可获得该结果<src>(如果您还想在预览窗口打开时播放音频,您只需将<autoplay>属性设置为"true")...不幸的是,现在在 Mavericks 上使用 Xcode 5.1,似乎使用该cid:方案(您已经在示例代码中用于加载.png文件)都无法完成这项工作!

只有向 Apple 报告错误才能(可能)解决此问题。

于 2014-06-08T07:40:25.703 回答