Swift 4: пытается загрузить PDF из данных - PullRequest
0 голосов
/ 26 января 2019

Я загружаю PDF из данных, чтобы создать из него UIImage. Мне нужно, чтобы он работал с ios9 в swift 4.

вот мой код:

    guard let cfData = CFDataCreate(kCFAllocatorDefault, UnsafePointer<UInt8>(data), data.length) else { return nil}
    let cgDataProvider = CGDataProviderCreateWithCFData(cfData)
    guard let pdf = CGPDFDocumentCreateWithProvider(cgDataProvider) else { return nil }

но у меня есть ошибка в первой строке: невозможно вызвать инициализатор для типа 'UnsafePointer' со списком аргументов типа '(Data)'

Я ищу помощи, как переписать его. Я пытался с "withUnsafeBytes", но я не смог заставить его работать:

    let tempData: NSMutableData = NSMutableData(length: data.count)!
    data.withUnsafeBytes {
        tempData.replaceBytes(in: NSMakeRange(0, data.count), withBytes: $0)
    }

    let bytes = data.bytes.assumingMemoryBound(to: UInt8.self)
    let cfData = CFDataCreate(kCFAllocatorDefault, bytes, data.length)


    guard let cfData = CFDataCreate(kCFAllocatorDefault, UnsafePointer<UInt8>(data), data.length) else { return nil}
    let cgDataProvider = CGDataProviderCreateWithCFData(cfData)
    guard let pdf = CGPDFDocumentCreateWithProvider(cgDataProvider) else { return nil }

1 Ответ

0 голосов
/ 27 января 2019

Вы пробовали это?

import PDFKit

let pdf = PDFDocument(data: data)

Таким образом, вы можете легко отобразить pdf внутри PDFView без дополнительных затрат на прохождение фундамента. Вы можете прочитать все о PDFKit здесь: https://developer.apple.com/documentation/pdfkit

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