Skip to content

Instantly share code, notes, and snippets.

@sgtsquiggs
Created November 2, 2017 20:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sgtsquiggs/d02f1e1ca12d543f164f73b7361317a0 to your computer and use it in GitHub Desktop.
Save sgtsquiggs/d02f1e1ca12d543f164f73b7361317a0 to your computer and use it in GitHub Desktop.
UIImage extension for PDF documents
import UIKit
extension UIImage {
convenience init?(pdfDocument: CGPDFDocument, pageNumber: Int = 1) {
guard let page = pdfDocument.page(at: pageNumber) else { return nil }
let size = page.getBoxRect(.mediaBox).size
UIGraphicsBeginImageContextWithOptions(size, true, UIScreen.main.scale)
let context = UIGraphicsGetCurrentContext()!
context.saveGState()
context.translateBy(x: 0.0, y: size.height)
context.scaleBy(x: 1.0, y: -1.0)
context.concatenate(page.getDrawingTransform(.mediaBox, rect: CGRect(origin: .zero, size: size), rotate: 0, preserveAspectRatio: true))
context.drawPDFPage(page)
context.restoreGState()
let pdfImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
guard let cgImage = pdfImage.cgImage else { return nil }
self.init(cgImage: cgImage)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment