Ios 如何在swift中显示CGPDF文档?

Ios 如何在swift中显示CGPDF文档?,ios,iphone,swift,cgpdfdocument,Ios,Iphone,Swift,Cgpdfdocument,嗨,我有一个CGPDFDocument对象。我想通过在我的应用程序中显示或使用外部应用程序来打开此文档。这是我到目前为止的代码。迅速地 let cfData = CFDataCreate(kCFAllocatorDefault, UnsafePointer<UInt8>(data.File.bytes), data.File.length) let cgDataProvider = CGDataProviderCreateWithCFData(cfData) let cgPD

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

 let cfData = CFDataCreate(kCFAllocatorDefault, UnsafePointer<UInt8>(data.File.bytes), data.File.length)
 let cgDataProvider =  CGDataProviderCreateWithCFData(cfData)
 let cgPDFDocument  =  CGPDFDocumentCreateWithProvider(cgDataProvider)
让cfData=CFDataCreate(kcfalocatordefault,UnsafePointer(data.File.bytes),data.File.length)
让cgDataProvider=CGDataProviderCreateWithCFData(cfData)
让cgPDFDocument=CGPDFDocumentCreateWithProvider(cgDataProvider)

您可以使用以下代码轻松地在swift中显示CGPDF文档:

// Get the document's file path.
let path = NSBundle.mainBundle().pathForResource("Newsletter.pdf", ofType: nil)

// Create an NSURL object based on the file path.
let url = NSURL.fileURLWithPath(path!)

// Create an NSURLRequest object.
let request = NSURLRequest(URL: url)

// Load the web viewer using the request object.
webView.loadRequest(request)
捆绑的PDF文档标题为“Newsletter.PDF”,“webView”是UIWebView对象的IBOutlet


PDF文档将很好地显示,用户可以滚动文档、放大和缩小等。

您可以使用以下代码轻松地在swift中显示CGPDF文档:

// Get the document's file path.
let path = NSBundle.mainBundle().pathForResource("Newsletter.pdf", ofType: nil)

// Create an NSURL object based on the file path.
let url = NSURL.fileURLWithPath(path!)

// Create an NSURLRequest object.
let request = NSURLRequest(URL: url)

// Load the web viewer using the request object.
webView.loadRequest(request)
捆绑的PDF文档标题为“Newsletter.PDF”,“webView”是UIWebView对象的IBOutlet

PDF文档将很好地显示,用户将能够滚动浏览文档、放大和缩小等。

在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()
}
以上代码是用于显示pdf的视图的
drawRect
方法。只需将此视图作为子视图添加到viewController
viewDidLoad
方法中,即可完成操作。

在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()
}

以上代码是用于显示pdf的视图的
drawRect
方法。只需将此视图作为子视图添加到viewController
viewDidLoad
方法中,您就完成了。

从要显示的位置开始?您的主捆绑包(项目)中有pdf文件吗?从您想要显示的位置?您的主捆绑包(项目)中有pdf文件吗?您知道获取cgPDFDocument文件名的方法吗?您知道获取cgPDFDocument文件名的方法吗?或者在序列图像板的view controller视图中添加此自定义视图。我遵循了你的代码,它工作得很好。谢谢,太棒了。非常感谢。重构后(提供上下文、文件URL等作为函数参数),该功能运行良好,可用于生成位图图像和矢量输出(用于打印或PDF创建),具体取决于所使用的绘图上下文类型。或将此自定义视图添加到脚本中的视图控制器视图中。我遵循了你的代码,它工作得很好。谢谢,太棒了。非常感谢。重构后(提供上下文、文件URL等作为函数参数),该功能运行良好,可用于生成位图图像和矢量输出(用于打印或PDF创建),具体取决于所使用的图形上下文类型。