ios – 将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,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,-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))
        // Draw red Box on top of page
        //UIColor.redColor().set()
        //UIRectFill(CGRectMake(20,20,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 {

    }

}

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...