PDF使用SWIFT进行解析

Jos*_*nio 9 pdf parsing swift

我想解析一个没有图像,只有文本的PDF.我正试图找到一些文字.例如,搜索字符串"Name:"并能够读取":"之后的字符.

我已经能够打开PDF,获取页数,并循环播放它们.问题是当我想使用像CGPDFDictionaryGetStream或者这样的函数时CGPDFStreamCopyData,因为它们使用指针.对于快速程序员,我在互联网上找不到太多信息.

也许最简单的方法是将所有内容解析为NSString.然后我可以做其余的事情.

这是我的代码:

// Get existing Pdf reference
let pdf = CGPDFDocumentCreateWithURL(NSURL(fileURLWithPath: path))
let pageCount = CGPDFDocumentGetNumberOfPages(pdf);
for index in 1...pageCount {
    let myPage = CGPDFDocumentGetPage(pdf, index)
    //Search somehow the string "Name:" to get whats written next
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*n G 0

这是一项相当密集的任务。有些库如 PDFKitten 已不再维护。这是我所做的 PDFKitten 到 swift 的移植,对字符串搜索/内容索引的完成方式进行了一些修改,并支持 truetype 字体。

https://github.com/SimpleApp/PDFParser

[免责声明:lib 作者]

[第二个免责声明:这个库是 100% 开源的。该图书馆与公司无关,它不是广告,甚至不是产品,我发布此评论是为了帮助人们,然后可能围绕它发展一个社区,因为这是一个非常常见的要求,没有任何免费的东西可以很好地工作]

编辑:这是一项相当密集的任务(更不用说所有字符编码问题)的原因是 PDF 格式没有“文本行”甚至“单词”的概念。它只有字符打印指令。这意味着如果你想找到一个“单词”,你必须使用字体信息重新计算每个字符块的框架,并找到可以合并成一个单词的字符。

这就是为什么您找不到很多库执行此类功能的原因,甚至一些大型项目有时无法提供正确的复制/粘贴或文本搜索功能。