Откройте NSData (содержимое PDF) в UIWebview, который хранится в Sqlite. - PullRequest
3 голосов
/ 02 апреля 2012

Я хочу открыть файл pdf в веб-представлении, но здесь другой сценарий, я сохранил содержимое PDF как NSData в таблицу sqlite (тип данных BLOB-объектов), но добился успеха, когда вставлял данные в таблицу sqlite, но как только я получилBLOB-содержимое в NSData и пытается открыть эти данные в WebView, это дает мне ошибку - не удалось найти заголовок PDF: `% PDF 'не найден.
Я использую метод webDview loadData для загрузки данных

[webView loadData:data MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];
Я провел большой поиск, а также перебрал другие вопросы о переполнении стека, но не нашел достаточного ответа.

спасибо,
Mayur

Ответы [ 3 ]

1 голос
/ 02 апреля 2012

Первые четыре байта любого файла PDF равны %PDF.Это говорит вам о том, что к тому времени, когда вы пытаетесь отобразить данные, это не файл PDF (или, если это так, начало было обрезано).

Либо вы помещаете поврежденные данные вбаза данных SQLite, или вы повреждаете ее, когда получаете ее.Это должно быть легко подтвердить тем или иным способом, просматривая данные в базе данных с помощью инструментов командной строки.

1 голос
/ 02 апреля 2012

Вы пытались создать дамп конвертирования NSData в NSString, а затем сбросить его на консоль?Файл PDF должен начинаться с "% PDF-1.2 ......", вы должны убедиться, что данные BLOB-объектов из sqlite представляют собой полный PDF-контент.

0 голосов
/ 18 июня 2013

Если вы открываете файл для печати из веб-представления, вы хотите использовать метод viewPrintFormatter UIPrintViewFormatter, чтобы назначить ваше веб-представление формататору.Затем вы добавили бы свой экземпляр UIPrintViewFormatter в свой экземпляр UIPrintInteractionController.

Вот пример использования UIPrintViewFormatter:

 UIViewPrintFormatter *viewPrintFormatter = [self.contentWebView  viewPrintFormatter];
[printInteractionController setPrintFormatter:viewPrintFormatter];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...