Swift 显示浏览 pdf 文件

来源:互联网 发布:淘宝买家退款骗局 编辑:程序博客网 时间:2024/06/04 19:32

webView显示pdf文件

在开发中,我们可以用webview加载pdf文件,这个直接加载文件绝对路径就可以了。

使用CoreGraphics绘制pdf内容

import UIKitimport CoreGraphicsclass PDFView: UIView {    var document:CGPDFDocument!    var pageNum:NSInteger = 1;     /// 初始化加载pdf视图     ///     /// - Parameters:     ///   - frame:frame     ///   - document: CGPDFDocument     ///   - pageNum: 页码     init(frame: CGRect,document:CGPDFDocument,pageNum:NSInteger) {        super.init(frame: frame);        self.document = document;        self.pageNum = pageNum;    }    required init?(coder aDecoder: NSCoder) {        fatalError("init(coder:) has not been implemented")    }    override func draw(_ rect: CGRect) {        super.draw(rect)        self.drawInContext(context: UIGraphicsGetCurrentContext()!);    }    func drawInContext(context:CGContext){        //第一句是调整图形的位置,如不执行绘制的图形会不在视图可见范围内        context.translateBy(x: 0.0, y: self.frame.size.height);        //第二句的作用是使图形呈正立显示        context.scaleBy(x: 1.0, y: -1.0);        ////获取需要绘制的页码的数据。        let pageRef:CGPDFPage = self.document!.page(at: self.pageNum)!;        ////记录当前绘制环境,防止多次绘画        context.saveGState();        /*         返回一个变换映射的盒子矩形作为指定的盒子         通过交叉相关计算的正确有效的矩形和MediaBox页面的入口。         旋转的有效直接根据网页/旋转进入。         中心的矩形在`矩形”。如果“旋转”是非零的,那么         rect将顺时针旋转`旋转度。`旋转”         必须是90的倍数。         大型的矩形,如果必要的话,那么,它与         对`矩形边缘。如果` preserveaspectratio”是真的,那么最后         直接将与边缘`矩形”只有在更多的限制性维度。       */        let pdfTransForm = pageRef.getDrawingTransform(CGPDFBox.cropBox, rect: self.bounds, rotate: 0, preserveAspectRatio: true);        context.concatenate(pdfTransForm);//把创建的仿射变换参数和上下文环境联系起来        context.drawPDFPage(pageRef);//把得到的指定页的PDF数据绘制到视图上        context.restoreGState();    }}

调用示例

/* 这里只是加载了第一页的内容,具体需求可以自定制。*/let pdfURL =   CFBundleCopyResourceURL(CFBundleGetMainBundle(), "Swift" as CFString, "pdf" as CFString, "" as CFString);        let  document = CGPDFDocument(pdfURL!);        let totalPage = document!.numberOfPages;        LLog(totalPage)        let pdf_view = PDFView(frame: M_RECT(0, y: 20, w: self.view.width, h: self.view.height-100),document:document!,pageNum:1);        pdf_view.backgroundColor = UIColor.white        self.view.addSubview(pdf_view)