[英]Convert PDF data to UIImage and download into album in Swift iOS
I have got a requirement like from REST API, I will get the PDF bytes data, So, In UI I have to convert the PDF bytes data to image(.jpg) format and download into photo Album. 在 Swift4 中可能嗎? 如果可能的話,可以分享一個示例代碼片段。
提前致謝
您可以將 pdf 保存到文檔目錄,並可以創建第一頁的縮略圖
import PDFKit
func pdfThumbnail(url: URL, width: CGFloat = 240) -> UIImage? {
guard let data = try? Data(contentsOf: url),
let page = PDFDocument(data: data)?.page(at: 0) else {
return nil
}
let pageSize = page.bounds(for: .mediaBox)
let pdfScale = width / pageSize.width
// Apply if you're displaying the thumbnail on screen
let scale = UIScreen.main.scale * pdfScale
let screenSize = CGSize(width: pageSize.width * scale,
height: pageSize.height * scale)
return page.thumbnail(of: screenSize, for: .mediaBox)
}
在文檔中查看 PDFKit。
您可以使用 PDF(或 PDF 文件)的數據表示來初始化 PDF 文檔,然后將其顯示在 PDFView 中。 鑒於 PDFView 從 UIView 繼承,所有標准 UIView 功能都應該存在,包括諸如
func UIImageWriteToSavedPhotosAlbum(UIImage, Any?, Selector?, UnsafeMutableRawPointer?)
應該按照它的簽名中所說的去做!
此代碼適用於我的問題:
GHServiceManager.shared.getPDF(fileName: self.pdfName, success: { (ssdata) in
let pdfData = ssdata as CFData
let provider:CGDataProvider = CGDataProvider(data: pdfData)!
let pdfDoc:CGPDFDocument = CGPDFDocument(provider)!
let pdfPage:CGPDFPage = pdfDoc.page(at: 1)!
var pageRect:CGRect = pdfPage.getBoxRect(.mediaBox)
pageRect.size = CGSize(width:pageRect.size.width, height:pageRect.size.height)
print("\(pageRect.width) by \(pageRect.height)")
UIGraphicsBeginImageContext(pageRect.size)
let context:CGContext = UIGraphicsGetCurrentContext()!
context.saveGState()
context.translateBy(x: 0.0, y: pageRect.size.height)
context.scaleBy(x: 1.0, y: -1.0)
context.concatenate(pdfPage.getDrawingTransform(.mediaBox, rect: pageRect, rotate: 0, preserveAspectRatio: true))
context.drawPDFPage(pdfPage)
context.restoreGState()
let pdfImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
dukePhotoLibrary?.saveImage(image: pdfImage)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.