Загрузка PDF Двоичный файл извлечен из введенного AJAX GET в WKWebView в PDFKit - PullRequest
1 голос
/ 27 мая 2019

Я пытаюсь перехватить поставленный ajax pdf файл с веб-сайта, защищенного аутентификацией.Поскольку ajax доставляет файл, URL-адрес не содержит ссылку «.pdf» для загрузки, а скорее доставляет файл PDF в виде вложения с размещением содержимого.

На данный момент, когда метод делегата definePolicyFor navigationResponse обнаруживает «application / pdf "mimetype, я вызываю методvaluJavaScript со следующим кодом:

func readUrlContent(url: NSURL, completionHandler: @escaping (_ result: String) -> Void) {
    self.evaluateJavaScript("(function() { var result = ''; $.ajax({type: 'GET', url: '\(url)', contentType: 'application/pdf; charset=utf-8', success: function(r) {result = r}, failure: function() {result = null}, async: false }); return result })()", completionHandler: { (response, error) -> Void in
    let result = response as! String
    completionHandler(result)
    })
}

С этим внедренным кодом (который я использую, потому что у меня были проблемы с файлами cookie и аутентификацией на веб-сайте с использованием WKWebView), я могууспешно распечатать двоичную строку PDF, возвращенную как «результат» в обработчике завершения в журнал.Теперь проблема в том, что мне нужно получить эти двоичные данные в формате PDF с помощью PDFKit.

Когда я беру эту двоичную строку и выполняю:

self.data = result.data(using: .utf8)
self.performSegue(withIdentifier: "pdfSegue", sender: nil)

И передаю двоичную строку PDF в PDFKit ViewController, чтобы отобразить ее, все страницы отображаются пустыми, и я получаю следующие ошибки:

"обнаружен непредвиденный тип объекта: 7."

"отсутствует или недопустим номер объекта."

"отсутствует или недопустим поток перекрестных ссылок."

"недопустимая длина потока 3555; должно быть 6444."

"FlateDecode: ошибка декодирования: неверная проверка заголовка."

и т. Д.и т. д. и т. д.

Как / как получить эти двоичные данные в формате PDF и просмотреть их с помощью PDFKit?

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