![](/img/trans.png)
[英]How to attach CGPDFDocument/CGPDFPage to MFMailComposeViewController
[英]How to display CGPDFDocument in swift?
嗨,我有一個CGPDFDocument對象。 我想通過在我的應用程序中顯示它或使用外部應用程序來打開該文件。 這是我到目前為止的代碼。 在SWIFT中
let cfData = CFDataCreate(kCFAllocatorDefault, UnsafePointer<UInt8>(data.File.bytes), data.File.length)
let cgDataProvider = CGDataProviderCreateWithCFData(cfData)
let cgPDFDocument = CGPDFDocumentCreateWithProvider(cgDataProvider)
在objective-c中此答案的幫助下, 這是一個迅速運行的示例:
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
方法中即可。
您可以使用以下代碼輕松快速地顯示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文檔將很好地顯示,並且用戶將能夠在文檔中滾動,放大和縮小等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.