не удалось найти заголовок PDF: «% PDF» не найден - PullRequest
8 голосов
/ 14 января 2012

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

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

Спасибо.

Ответы [ 3 ]

3 голосов
/ 14 января 2012

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

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

pdfDocument = CGPDFDocumentCreateWithProvider(provider);

CGDataProviderRelease(provider);

Затем загрузите pdfDocument в ваше веб-представление.

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

2 голосов
/ 14 января 2012

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

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

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

0 голосов
/ 08 апреля 2012

вот решение, если вы используете веб-сервис SAP: в SAP System есть метод для преобразования двоичных данных (XSTRING) в Base64: cl_http_utility => encode_x_base64 С помощью http можно передавать данные Base64. В xcode я использовал эту библиотеку: ссылка

// 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];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...