🌀Image

在 Swift Playgrounds for iPad 中使用 PDF 圖檔。

🌀 Image(pdf: url)

import SwiftUI

// 🌀Image(pdf: url)
extension Image {
    
    public init?(pdf url: URL) {
        
        guard 
            let doc  = CGPDFDocument(url as CFURL),
            let page = doc .page(at: 1) 
            else { return nil }
        
        let pageRect = page.getBoxRect(.mediaBox)
        let renderer = UIGraphicsImageRenderer(size: pageRect.size)
        
        let img = renderer.image { ctx in
            UIColor.clear.set()
            ctx.fill(pageRect)
            ctx.cgContext.translateBy(x: 0.0, y: pageRect.size.height)
            ctx.cgContext.scaleBy(x: 1.0, y: -1.0)
            ctx.cgContext.drawPDFPage(page)
        }
        
        self = Image(uiImage: img)
    }
}

使用前,必須先將 PDF 檔匯入 Swift Playgrounds 中:

插入 PDF 檔時,雖然只會出現一個奇怪的小圖,但它背後其實是一個 #fileLiteral (檔名不會顯示出來,除非放在附註區),它的真正型別是 URL。 👉 Swift Literals - NSHipster ⭐

Last updated