我正在尝试编写一个简单的函数来获取PDF中的页数。我现在看到的每个代码示例似乎都失败了Swift 3,而Xcode推荐的任何代码仍无效。
func pageCount(filepath: String) -> Int {
let localUrl = filepath as CFString
let pdfDocumentRef = CFURLCreateWithFileSystemPath(nil, localUrl, CFURLPathStyle.cfurlposixPathStyle, false)
let page_count = (pdfDocumentRef as! CGPDFDocument).numberOfPages
return page_count
}
这也不起作用:
func pageCount(filepath: String) -> Int {
let url = NSURL(fileURLWithPath: filepath)
let pdf = CGPDFDocument(url)
let page_count = pdf?.numberOfPages
return page_count!
}
任何想法为什么?
答案 0 :(得分:2)
修改您的代码,如下所示:
func pageCount(filepath: String) -> Int {
var count = 0
let localUrl = filepath as CFString
if let pdfURL = CFURLCreateWithFileSystemPath(nil, localUrl, CFURLPathStyle.cfurlposixPathStyle, false) {
if let pdf = CGPDFDocument(pdfURL) {
let page_count = pdf.numberOfPages
count = pdf.numberOfPages
}
}
return count
}
基本上,在您的代码中,您试图将CFURL
强制转换为CGPDFDocument
而您无法执行此操作:)您需要从{{1}创建CGPDFDocument
实例}}。完成后,您可以获取PDF文档的页数。
答案 1 :(得分:0)
Apple似乎有两个PDF对象:CGPDFDocument
和PDFDocument
。第二个更容易使用。
import Quartz
func NumPages(filename: String) -> Int {
let pdfDoc = PDFDocument(url: URL(fileURLWithPath: filename))!
return pdfDoc.pageCount
}