如果我正确理解代码,PDFKitten 只会在页面的 /Resources 字典的 /Font 条目中查找字体。至少这是我对Scanner 的方法 fontCollectionWithPage 的解释,其结果由pdfScannerCallbacks 中的 setFont查询以设置当前字体对象。
此外,Do 运算符(即用于将 XObject 资源的内容注入页面内容的运算符)没有回调。除非 CGPDFScannerScan 在后台解释此运算符,否则根本不会扫描包含的 XObjects 的内容。这将符合您的观察,即文本设置运算符回调永远不会被调用。
但是,您的文件 mundo1.pdf 在其页面的 /Resources 字典中没有任何直接的 /Font 条目。相反,每个页面的所有实际内容都分别包装到单个 /XObject 资源中。这些 XObject 又拥有自己的 /Resources 字典,其中包含定义用于相应页面的字体的 /Font 条目。
因此,PDFKitten 对文件中使用的字体一无所知,尤其是它们的编码,因此无法从 PDF 内容中提取文本。也许它甚至看不到要解释的 PDF 内容。
因此,我建议您在 PDFKitten 问题管理网站上发布此问题。
顺便说一句,这个 PDF 结构完全符合 PDF 规范。尽管如此,它看起来像是对 iText 库的不充分使用。像这样使用 iText 的软件的作者应该检查他的代码并开始使用更适合的 iText 库类。