将PDF转换为UIImage

func drawOnPDF(path: String) { // Get existing Pdf reference let pdf = CGPDFDocumentCreateWithURL(NSURL(fileURLWithPath: path)) // Get page count of pdf, so we can loop through pages and draw them accordingly let pageCount = CGPDFDocumentGetNumberOfPages(pdf); // Write to file UIGraphicsBeginPDFContextToFile(path, CGRectZero, nil) // Write to data // var data = NSMutableData() // UIGraphicsBeginPDFContextToData(data, CGRectZero, nil) for index in 1...pageCount { let page = CGPDFDocumentGetPage(pdf, index) let pageFrame = CGPDFPageGetBoxRect(page, kCGPDFMediaBox) UIGraphicsBeginPDFPageWithInfo(pageFrame, nil) var ctx = UIGraphicsGetCurrentContext() // Draw existing page CGContextSaveGState(ctx); CGContextScaleCTM(ctx, 1, -1); CGContextTranslateCTM(ctx, 0, -pageFrame.size.height); CGContextDrawPDFPage(ctx, page); CGContextRestoreGState(ctx); // Draw image on top of page var image = UIImage(named: "signature3") image?.drawInRect(CGRectMake(100, 100, 100, 100)) // Draw red box on top of page //UIColor.redColor().set() //UIRectFill(CGRectMake(20, 20, 100, 100)); } UIGraphicsEndPDFContext() } 

我的问题是PDF转换为图像,但如何在视图中打开图像然后向左,向右,向上和向下滑动如何可能

斯威夫特3:

 func convertPDFPageToImage(page:Int) { let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] let filePath = documentsURL.appendingPathComponent("pathLocation").path do { let pdfdata = try NSData(contentsOfFile: filePath, options: NSData.ReadingOptions.init(rawValue: 0)) let pdfData = pdfdata as CFData let provider:CGDataProvider = CGDataProvider(data: pdfData)! let pdfDoc:CGPDFDocument = CGPDFDocument(provider)! pageCount = pdfDoc.numberOfPages; let pdfPage:CGPDFPage = pdfDoc.page(at: page)! 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() self.imageView.image = pdfImage } catch { } } 

我在UIImage中获得了Pdf页面转换的解决方案。 此代码PDF页面在Uiimage中转换并保存在图像文档目录中。 PDF下载和页面计数分隔页面视图图像转换。

  func drawOnPDF(path: String) { var urlstr: NSURL = NSURL.fileURLWithPath(path)! var pdf: CGPDFDocumentRef = CGPDFDocumentCreateWithURL(urlstr) var page: CGPDFPageRef; var frame: CGRect = CGRectMake(0, 0, 100, 200) var pageCount: Int = CGPDFDocumentGetNumberOfPages(pdf); for (var i = 0; i < pageCount; i++) { var mypage: CGPDFPageRef = CGPDFDocumentGetPage(pdf, i+1) frame = CGPDFPageGetBoxRect(mypage, kCGPDFMediaBox) UIGraphicsBeginImageContext(CGSizeMake(600, 600*(frame.size.height/frame.size.width))) var ctx: CGContextRef = UIGraphicsGetCurrentContext() CGContextSaveGState(ctx) CGContextTranslateCTM(ctx, 0.0, frame.size.height) CGContextScaleCTM(ctx, 1.0, -1.0) CGContextSetGrayFillColor(ctx, 1.0, 1.0) CGContextFillRect(ctx, frame) page = CGPDFDocumentGetPage(pdf, i + 1) var pdfTransform: CGAffineTransform = CGPDFPageGetDrawingTransform(page, kCGPDFMediaBox, frame, 0, true) CGContextConcatCTM(ctx, pdfTransform); CGContextSetInterpolationQuality(ctx, kCGInterpolationHigh) CGContextSetRenderingIntent(ctx, kCGRenderingIntentDefault) CGContextDrawPDFPage(ctx, page) var thumbnailImage: UIImage = UIGraphicsGetImageFromCurrentImageContext() CGContextRestoreGState(ctx) var documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).last! as! String documentsPath = documentsPath.stringByAppendingFormat("/Page%d.png", i+1) UIGraphicsEndImageContext() imagedata = UIImagePNGRepresentation(thumbnailImage) imagedata.writeToFile(documentsPath, atomically: true) array.addObject(documentsPath) } let dirPath = array.objectAtIndex(0) as? String let image = UIImage(contentsOfFile: dirPath!) NSUserDefaults.standardUserDefaults().setObject(array, forKey: "Array") println("\(array)") }