Finder不会为JPEG(public.jpeg)文件类型调用我的Quick Look生成器

时间:2015-10-27 02:01:45

标签: image macos quicklook uti

我实现了一个快速查看生成器,可以显示多种图像类型,包括JPEG文件。

系统调用它来为其属性列表中显示的任何文件类型呈现缩略图和预览,除了一个:public.jpeg。

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string></string>
        <key>CFBundleTypeRole</key>
        <string>QLGenerator</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.jpeg</string>
            <string>com.canon.cr2-raw-image</string>
            <string>com.sony.arw-raw-image</string>
        </array>
    </dict>
</array>

鉴于上面的属性列表片段,我的生成器将成功调用.CR2和.ARW文件,但从不用于.JPG文件。

我已经使用qlmanage重置了Quick Look生成器数据库,并使用qlmanage -m确认我的生成器与public.jpeg UTI相关联(就像在本例中与其他两个UTI一样)。

qlmanage -m | grep jpeg
public.jpeg -> /Applications/MyApp.app/Contents/Library/QuickLook/MyQLGenerator.qlgenerator (123)

尽管如此,当我在Finder中选择JPEG文件并按空格键时,Quick Look始终会调用默认生成器:

10/26/15 6:23:49.343 PM com.apple.quicklook.satellite[21978]: [QL] <QLThumbnailRequest testfile.jpg>. Content type UTI: public.jpeg. Generator used: <QLGenerator /System/Library/QuickLook/Image.qlgenerator>

快速查看甚至在我特别要求它调用我的时调用默认生成器:

qlmanage -p -c public.jpeg -g "/Applications/MyApp.app/Contents/Library/QuickLook/MyQLGenerator.qlgenerator" testfile.jpg 
Testing Quick Look preview with files:
    testfile.jpg
    - force using content type UTI: public.jpeg
    - force using generator at path:
    /Applications/MyApp.app/Contents/Library/QuickLook/MyQLGenerator.qlgenerator

2015-10-26 18:43:34.450 qlmanage[22054:507] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x8c27, name = 'com.apple.tsm.portname'
See /usr/include/servers/bootstrap_defs.h for the error codes.
2015-10-26 18:43:34.475 qlmanage[22054:507] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x8d47, name = 'com.apple.CFPasteboardClient'
See /usr/include/servers/bootstrap_defs.h for the error codes.
2015-10-26 18:43:34.475 qlmanage[22054:507] Failed to allocate communication port for com.apple.CFPasteboardClient; this is likely due to sandbox restrictions    

(bootstrap_register()错误在Quick Look中似乎无处不在,并且在预览其他文件类型时也会出现,但这些错误会按预期工作。)

有没有办法让Quick Look为JPEG文件调用我的生成器?

1 个答案:

答案 0 :(得分:1)

这似乎是MacOS 10.9中的一个错误。 qlImageSize项目的作者遇到了同样的问题并提交了radar report

qlImageSize discussion thread的另一位参与者评论说&#34; Apple回复了我的错误报告,以确认优胜美地的解决方案。没有提到小牛队。&#34;

我自己的经历是一样的。不在10.9下为public.jpeg调用的相同Quick Look生成器在10.10和10.11下按预期工作。