【发布时间】:2016-03-20 15:13:21
【问题描述】:
文档对我来说不是很清楚。到目前为止,我认为我需要设置一个 CGPDFOperatorTable,然后为每个 PDF 页面创建一个 CGPDFContentStreamCreateWithPage 和 CGPDFScannerCreate。
文档中提到了设置回调,但我不清楚如何设置。如何实际从页面获取内容?
这是我目前的代码。
let pdfURL = NSBundle.mainBundle().URLForResource("titleofdocument", withExtension: "pdf")
// Create pdf document
let pdfDoc = CGPDFDocumentCreateWithURL(pdfURL)
// Nr of pages in this PF
let numberOfPages = CGPDFDocumentGetNumberOfPages(pdfDoc) as Int
if numberOfPages <= 0 {
// The number of pages is zero
return
}
let myTable = CGPDFOperatorTableCreate()
// lets go through every page
for pageNr in 1...numberOfPages {
let thisPage = CGPDFDocumentGetPage(pdfDoc, pageNr)
let myContentStream = CGPDFContentStreamCreateWithPage(thisPage)
let myScanner = CGPDFScannerCreate(myContentStream, myTable, nil)
CGPDFScannerScan(myScanner)
// Search for Content here?
// ??
CGPDFScannerRelease(myScanner)
CGPDFContentStreamRelease(myContentStream)
}
// Release Table
CGPDFOperatorTableRelease(myTable)
这是一个与PDF Parsing with SWIFT 类似的问题,但还没有答案。
【问题讨论】:
-
我认为我必须编写回调,在扫描仪扫描时调用。有人可以发布回调示例吗?它是我向 CGPDFOperatorTableSetCallback 注册的自定义方法吗?举个例子就好了。
-
你知道 if 检查没有做任何事情吗?因为它从 if 块中返回,然后继续执行。要使其仅在有页面时循环浏览页面,请将 if 块之后的所有内容放在 else 块内。
-
我愿意。我真的很想了解更多关于回调的信息。我知道 if 语句,不过谢谢!
-
您能否接受任何答案或发布您自己的答案以帮助像我这样的未来读者?这是非常需要的。 @TomWolters