2012-09-28 18 views
11

में काम नहीं कर रहा है आईओएस 6 में QLPreviewController अब एक यूआरएल से पीडीएफ लोड नहीं करता है। यह आईओएस 5 में ठीक काम करता है। मैंने QLPreviewControllerDataSource विधियों को here दस्तावेज के रूप में कार्यान्वित किया है।QLPreviewController आईओएस 6

#pragma mark - QLPreviewControllerDataSource 
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller { 
    return 1; 
} 

- (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index; 
{ 
    NSURL *fileURL = [NSURL URLWithString:@"http://www.bliley.net/XTAL/PDF_Instructions/Test_File.pdf"]; 
    return fileURL; 
} 

यह iOS 5 में पूरी तरह से काम करता है, IOS 6 कंसोल आउटपुट में तथापि:

Couldn't issue file extension for path: /XTAL/PDF_Instructions/Test_File.pdf 
+0

क्या इसे वास्तव में स्थानीय फ़ाइल यूआरएल का उपयोग करने की ज़रूरत नहीं है? ऐसा लगता है कि आप एक दूरस्थ यूआरएल का उपयोग कर रहे हैं और यह http: // host/part के बाद सब कुछ के साथ त्रुटि कर रहा है। – valheru

+0

किसी ने मुझे बताया कि आईओएस 6 में उन्होंने इस विधि के लिए एक कठोर जांच लागू की है कि यूआरएल सबसे अधिक 'फाइल: //' से शुरू होता है, लेकिन मुझे इसके बारे में कोई दस्तावेज नहीं मिल रहा है। अगर कोई संदर्भ के बारे में जानता है, तो कृपया पोस्ट करें। – MikeIsrael

+0

क्या आपको कोई समाधान मिला? यदि ऐसा है तो कृपया इसे साझा करें या एक जवाब स्वीकार करें। धन्यवाद –

उत्तर

8

आप fileURLWithPath बजाय URLWithString उपयोग करने की कोशिश की है? मेरे पास अन्य मुद्दे थे जो ऐसा करके तय किए गए थे।

यह भी सुनिश्चित नहीं है कि QLPreviewController दूरस्थ URL को संभाल लेंगे या नहीं। यदि नहीं, तो आप फ़ाइल डाउनलोड कर सकते हैं और फिर इसे प्रदर्शित कर सकते हैं।

+1

fileURLWithPath मेरी समस्या तय! धन्यवाद! –

+0

मेरे पास पहले से ही ऐप स्टोर में एक एप्लिकेशन है। यह आईओएस 5 में ठीक काम करता है लेकिन यह अब और काम नहीं करता है। मुझे इसे काम करने के लिए सबकुछ बदलना होगा? ऐप्पल द्वारा क्या एक महान "उन्नयन"। –

4

मैं ने वही समस्या हो रहा है और ऐसा लगता है QLPreviewItem

की फ़ाइल प्रकार यूआरएल का एक सख्त प्रवर्तन से स्टेम सकता है लगता है
@property (readonly) NSURL *previewItemURL; 
Discussion 
This property is used by a Quick Look preview controller to get an item’s URL. In typical use, you would implement a getter method in your preview item class to provide this value. 

The value of this property must be a file-type URL. 

If the item is not available for preview, this property’s getter method should return nil. In this case, the Quick Look preview controller displays a “loading” view. 

Availability 
Available in iOS 4.0 and later. 
Declared In 
QLPreviewItem.h 

अद्यतन: मैं एप्पल इस मुद्दे से निपटने के साथ एक बग खोला है आईओएस 6 के लिए और ऐसा लगता है कि उन्होंने इसे एक बग के रूप में स्वीकार किया है, इसलिए निकट भविष्य में एक फिक्स पेश कर सकता है। मैंने जो बग खोला था उसे पूर्वावलोकन के लिए कस्टम NSURLProtocols का उपयोग करना था, लेकिन अन्य पहलुओं पर भी लागू हो सकता है।

Link to class

+0

अभी भी ऐप्पल से कोई अपडेट नहीं है, लेकिन UIWebView का उपयोग करके काम करने के लिए काम करने में सक्षम था और फ़ाइल – MikeIsrael

7

मैं दूरदराज के यूआरएल से फ़ाइल डाउनलोड की है और स्थानीय रूप से सहेजा, तो मैं पीडीएफ QLPreviewController .इसके IOS 6 इसके काम करने का उपयोग कर प्रदर्शित करते हैं। पीडीएफ दिखा लिए

NSString *local_location; 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"sampleData" ofType:@"plist"]; 
     path = NSTemporaryDirectory(); 
    local_location= [path stringByAppendingPathComponent:[NSString stringWithFormat:@"My_Invoice.pdf"]]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString: remoteurl]]; 
     [request setDownloadDestinationPath:local_location]; 
     [request startSynchronous]; 

:

सबसे पहले मैं निम्नलिखित कोड का उपयोग कर दूरस्थ url से फाइल सेव

QLPreviewController* preview = [[QLPreviewController alloc] init]; 
     preview.dataSource = self; 
     [self presentModalViewController:preview animated:YES]; 

QLPreviewController प्रतिनिधि तरीके हैं:

- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller 
{ 
    return 1; 
} 

- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index 
{ 

    return [NSURL fileURLWithPath:local_location]; 


} 
+2

फ़ाइल लोड करने के लिए urlprotocol ओवरराइड करने में सक्षम था बस मेरे दो सेंट: फ़ाइल को इंगित करने पर आपको "पथ के लिए फ़ाइल एक्सटेंशन जारी नहीं किया जा सका" त्रुटि भी मिलती है यूआरएल द्वारा मौजूद नहीं है। इसलिए यदि आप फ़ाइल डाउनलोड करते हैं और फिर QLPreviewController को गलत URL देते हैं तो आपको यह वही त्रुटि मिल जाएगी। तुम ऐसा क्यों करोगे ? अच्छी तरह से मूर्खतापूर्ण कीड़े होती है ... –

+0

@ सेबेस्टियननसुबामेर मुझे इस परियोजना में मेरी त्रुटि नहीं मिली। एक बार अपना रास्ता जांचें। – Suresh

+1

क्षमा करें मुझे यह कहना नहीं था कि यह आपके प्रोजेक्ट में हुआ था, बस यह मेरे साथ हुआ और अन्य पाठकों को यह बताना चाहता था कि फ़ाइल मौजूद है यह जांचना एक अच्छा विचार है :) –

0

लेकिन टिप्पणी कि QLPreviewController को स्थानीय संसाधन

पर एक यूआरएल की उम्मीद है

आपको स्थानीय रूप से पहले पीडीएफ फ़ाइल को डाउनलोड और सहेजने की आवश्यकता होगी और फिर स्थानीय फ़ाइल में एक उचित फ़ाइल यूआरएल बनाना होगा।