如何在swift中显示CGPDFDocument?

Jur*_*hip 0 iphone cgpdfdocument ios swift

嗨,我有一个CGPDFDocument对象.我想通过在我的应用程序中显示它或使用外部应用程序来打开此文档.这是我到目前为止的代码.在SWIFT

 let cfData = CFDataCreate(kCFAllocatorDefault, UnsafePointer<UInt8>(data.File.bytes), data.File.length)
 let cgDataProvider =  CGDataProviderCreateWithCFData(cfData)
 let cgPDFDocument  =  CGPDFDocumentCreateWithProvider(cgDataProvider)
Run Code Online (Sandbox Code Playgroud)

小智 6

在objective-c中这个答案的帮助下,是swift中的一个工作示例:

override func draw(_ rect: CGRect) {

    super.draw(rect)

    let context: CGContext = UIGraphicsGetCurrentContext()!
    context.setFillColor(red: 1.0,green: 1.0,blue: 1.0,alpha: 1.0)
    context.fill(self.bounds)
    let filepath = (Bundle.main.path(forResource: "Example", ofType: "pdf"))! as String
    let url = URL(fileURLWithPath: filepath)
    let pdf: CGPDFDocument! = CGPDFDocument(url as CFURL)
    let page: CGPDFPage = pdf.page(at: 1)!
    let pageRect: CGRect = page.getBoxRect(CGPDFBox.mediaBox)
    let scale: CGFloat = min(self.bounds.size.width / pageRect.size.width , self.bounds.size.height / pageRect.size.height)
    context.saveGState()
    context.translateBy(x: 0.0, y: self.bounds.size.height)
    context.scaleBy(x: 1.0, y: -1.0)
    context.scaleBy(x: scale, y: scale)
    context.drawPDFPage(page)
    context.restoreGState()
}
Run Code Online (Sandbox Code Playgroud)

上面的代码是drawRect用于显示pdf的视图的方法.只需在viewController viewDidLoad方法中将此视图添加为子视图即可完成.