2012-01-13 9 views
8

मैं वेब सेवा एंडपॉइंट से पीडीएफ सामग्री डाउनलोड करने की कोशिश कर रहा हूं जो बाइनरी के रूप में आ रहा है। बेस 64 में डीकोड करने के बाद मैं डिकोडेड फ़ाइल को वेबव्यू में जोड़ रहा हूं, जिसमें पीडीएफ हेडर त्रुटि को प्रदर्शित करने में असफल रहा है।पीडीएफ शीर्षलेख ढूंढने में असफल रहा: '% पीडीएफ' नहीं मिला

क्या कोई जानता है कि मैं इस त्रुटि को ठीक करने के लिए कैसे आगे बढ़ सकता हूं? क्या मुझे यहां कोई कदम याद आ रहा है?

धन्यवाद।

+0

क्या की तरह अपने कोड दिखता है? यह त्रुटि सबसे अधिक संभावना तब आती है जब पीडीएफ मौजूद नहीं है या –

+0

mwinn22 नहीं हो सकता है, मैं बेस 64 क्लास का उपयोग http://blog.objectgraph.com/index.php/2010/04/20/encrypting-decrypting-base64-encode से कर रहा हूं -डेकोड-इन-आईफोन-ऑब्जेक्ट-सी/और सरणी से मान को डीकोड करना और एनएसडीटा में संग्रह करना। – kforkarim

उत्तर

2

पीडीएफ के मुद्दे को पढ़ने वाले मेरे ऐप को विकसित करते समय मुझे यह त्रुटि थी, पीडीएफ मौजूद नहीं है, जहां आप इसे कॉल करते हैं। लौटाया जा रहा बाइनरी डेटा वह त्रुटि प्रतिक्रिया है जिसे आपकी वेब सेवा कॉल कर रही है। उदाहरण के लिए अगर मैं एक पीडीएफ दस्तावेज़ विनती करता हूँ:

http://localhost:8080/template/DocumentServlet?documentId=923447&JSSESIONID=77EFJD3IJD8I3MMWW2435353J

अगर उस दस्तावेज़ उस पते पर मौजूद नहीं है तो मैं एक त्रुटि प्रतिसाद मिलेगा, और कहा कि बाइनरी डेटा क्या है कि वापस आ जा रही है है ।

+0

मैट, मैं देख सकता हूं कि डेटा डाउनलोड किया जा रहा है और nsdata में पार्स किया जा सकता है, शायद यह संभव हो सकता है कि मैं ठीक से डीकोड नहीं कर रहा था, अब मेरे पास यह त्रुटि नहीं है लेकिन यह पीडीएफ पर कुछ भी नहीं दिखाती है। बस ग्रे पीडीएफ, और मैंने पीडीएफ को लिखा और पीडीएफ खोलने की कोशिश की, फिर भी यह मुझे एक त्रुटि देता है कि पीडीएफ फाइल क्षतिग्रस्त हो गई है। – kforkarim

+0

@kforkarim: वह यह नहीं कह रहा है कि डेटा नहीं है, वह कह रहा है कि डेटा त्रुटि प्रतिक्रिया है, न कि पीडीएफ जिसे आपने प्राप्त करने का प्रयास किया था। सुनिश्चित करें कि जिस URL को आप एक्सेस करने का प्रयास कर रहे हैं वह सही यूआरएल है और संसाधन मौजूद है और पहुंच योग्य है (आपके पास अनुमति है, यह पहुंच योग्य है, आदि)। –

3

तरह

NSData *dataContent; // response data. 
CFDataRef myPDFData; 
myPDFData = (CFDataRef)dataContent; 
CGDataProviderRef provider = CGDataProviderCreateWithCFData(myPDFData); 

pdfDocument = CGPDFDocumentCreateWithProvider(provider); 

CGDataProviderRelease(provider); 

कुछ जोड़ने की कोशिश फिर अपने वेब दृश्य में pdfDocument लोड।

या कस्टम zoomPDFViewer बनाने पर एक नज़र डालें। ऐप्पल का http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html पर एक अच्छा उदाहरण है जो मैंने किया है क्योंकि मुझे वेबव्यू में सही ढंग से लोड करने के लिए pdfdocument नहीं मिल सका।

0

यहाँ समाधान है अगर तुम एसएपी वेब सेवा का उपयोग: एसएपी सिस्टम में वहाँ Base64 को बाइनरी डेटा (XSTRING) कन्वर्ट करने के लिए एक विधि है: cl_http_utility => encode_x_base64 का उपयोग http यह Base64 स्थानांतरण संभव है डेटा। xcode में मैं इस पुस्तकालय का इस्तेमाल किया: a link

// 3) Decode Base 64 
// Then you can put that back like this 
NSData *b64DecData = [Base64 decode:b64EncStr]; 

तो: [webDisplay loadData:b64DecData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];