2012-01-13 2 views
8

Я пытаюсь загрузить pdf-контент из конечной точки webservice, которая поступает как двоичная. После декодирования в base64 я прикрепляю декодированный файл к webview, в котором не удалось найти ошибку заголовка pdf.не удалось найти PDF-заголовок: «% PDF» не найден

Кто-нибудь знает, как я могу исправить эту ошибку? Я пропустил какой-то шаг здесь?

Спасибо.

+0

Что делает ваш код выглядит? Эта ошибка, скорее всего, возникает, если PDF не существует или не может –

+0

mwinn22, я использую класс Base64 от http://blog.objectgraph.com/index.php/2010/04/20/encrypting-decrypting-base64-encode -decode-in-iphone-objective-c/и просто декодировать значение из массива и хранить в nsdata. – kforkarim

ответ

2

У меня была эта ошибка при разработке моего приложения, которое читало pdf-файл, так как PDF-файл не существует там, где вы его вызываете. Возвращаемые двоичные данные - это ответ на ошибку, вызываемый веб-службой. Например, если я запросить документ в формате PDF по адресу:

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

, если этот документ не существует по этому адресу, то я буду получать ошибочный ответ, и это то, что двоичные данные, которые возвращаются ,

+0

matt, я вижу, что данные загружаются и анализируются в nsdata, возможно, возможно, что я не был правильно декодирован, теперь у меня нет этой ошибки, но она ничего не показывает в pdf. Просто серый pdf, и я писал в формате pdf и пытался открыть pdf, но он дает мне ошибку, файл pdf поврежден. – kforkarim

+0

@kforkarim: Он не говорит, что нет данных, он говорит, что данные - это ответ на ошибку, а не тот PDF, который вы пытались получить. Убедитесь, что URL-адрес, к которому вы пытаетесь получить доступ, является правильным URL-адресом и что ресурс существует и доступен (у вас есть разрешение, доступность и т. Д.). –

3

Попробуйте добавить что-то вроде

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

pdfDocument = CGPDFDocumentCreateWithProvider(provider); 

CGDataProviderRelease(provider); 

Затем загрузите pdfDocument в свой WebView.

или взглянуть на создание пользовательского zoomPDFViewer. У Apple есть хороший пример в http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html, это то, что я сделал, так как я не мог правильно загрузить pdfdocument в webview.

0

вот решение, если вы используете SAP веб-службы: в системе SAP существует метод для преобразования двоичных данных (XSTRING) в Base64: 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];

Смежные вопросы