2010-01-30 11 views
14

मैं एक तरह से (सार्वजनिक या अन्यथा) प्राप्त करने के लिए देख रहा हूँ एक NSView, NSImage, CGImageRef, आदि है कि एक फ़ाइल के लिए quicklook पूर्वावलोकन को दर्शाता है। अनिवार्य रूप से QLThumbnailImageCreate() के बराबर है लेकिन पूर्वावलोकन के लिए।एनएसवी व्यू या एनएसआईमेज में मैक क्विक लुक पूर्वावलोकन?

सार्वजनिक एपीआई मैं इस का समर्थन नहीं करते पा सकते हैं। वे थंबनेल छवि या QLPreviewPanel के निर्माण की अनुमति देते हैं। पैनल वास्तव में त्वरित लुक पूर्वावलोकन प्रदर्शित करता है, लेकिन मुझे इसे अन्य दृश्यों में एम्बेड करने के लिए पूर्वावलोकन की उपस्थिति तक पहुंच नहीं मिल सकती है, न ही मैं एक साथ कई पूर्वावलोकन प्रदर्शित कर सकता हूं।

पृष्ठभूमि के लिए, मैं एक ऐप लिख रहा हूं जहां उपयोगकर्ता अन्य फाइलों के लिंक एम्बेड कर सकते हैं जिन्हें इनलाइन प्रदर्शित किया जाना चाहिए, जैसे < आईएमजी > एचटीएमएल में टैग। जेपीजी और पीडीएफ जैसी छवियों के लिए यह पता लगाना आसान है कि क्या प्रदर्शित करना है। मैंने सोचा कि अन्य प्रारूपों के लिए मैं फ़ाइल की सामग्री का एक अच्छा दृश्य प्रस्तुतिकरण उत्पन्न करने के लिए त्वरित रूप का उपयोग करूंगा। इस तरह मेरे आवेदन द्वारा समर्थित प्रारूपों का सेट आसानी से विस्तारित होगा (केवल नए त्वरित देखो जेनरेटर डाउनलोड करें)।

उत्तर

5

मैंने इसकी जांच बड़े पैमाने पर थोड़ी देर के लिए एक बार वापस देखा और यह करने के लिए एक आसान तरीका खोजने के लिए सक्षम नहीं था। फ़ाइल के प्रकार के आधार पर, क्विकलुक विभिन्न प्रकार के आउटपुट उत्पन्न करता है। उदाहरण के लिए, iWork फ़ाइलों के लिए, जेनरेटर HTML बनाता है जो इसे वेबव्यू में प्रदर्शित करता है। अन्य प्रकार के लिए यह विभिन्न प्रकार के डेटा देता है।

मैं कभी नहीं कोड का उपयोग कर समाप्त हो गया, लेकिन यहाँ है कि काम हो सकता है कुछ कोड मैं खोदा और कुछ निजी एपीआई है:

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; 
} 
+1

तुम भी मैट जेमेल से बाहर की जाँच करने के लिए चाहते हो सकता है: http: //mattgemmell.com/2007/10/29/how-to-get-a-quick-look-preview-as-an-nsimage यह एक पूर्वावलोकन (यहां तक ​​कि बड़े) बनाने के लिए QLThumbnailImageCreate उपयोग करता है। अगर मुझे सही याद है, तो मेरी समस्या यह थी कि यह केवल पहले पेज दस्तावेजों के साथ काम करता था। –

+2

मैट जेमेल से कोड के शीर्षक के बावजूद, यह वास्तव में केवल थम्बनेल, नहीं पूर्वावलोकन देता है। –

+0

निजी एपीआई के लिए धन्यवाद ... वे उपयोगी लग रहे हैं। मैं समझ है कि किसी तरह एक दिया फ़ाइल के लिए जनरेटर बंडल को खोजने के लिए और उसके बाद, QL पैनल की भूमिका निभाते हैं एचटीएमएल, चित्र, आदि को स्वीकार करने की जरूरत है यह करने के लिए केवल प्रशंसनीय रास्ता। पर्याप्त हैकिंग के साथ काम करने योग्य लगता है लेकिन छोटे नहीं और न ही विशेष रूप से मजबूत अगर ऐप्पल परिवर्तन करता है। –

संबंधित मुद्दे