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()
}
My problem is PDF convert to image but how to open image in View then swipe left,right,up and down how to possible
Swift 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 {
}
}
I Got the Solution for Pdf page convert in UIImage. This code PDF Page convert in Uiimage and save in image document directory. PDF Download And Page Count to separate Page vise image convert.
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)")
}
来源:https://stackoverflow.com/questions/32604857/convert-pdf-to-uiimage