簡體   English   中英

將PDF數據轉換為UIImage並下載到Swift iOS中的相冊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM