You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 18测试版PDFPage.characterBounds(at:)返回错误字符边界求解决方案

iOS 18测试版PDFKit characterBounds(at:) 问题临时解决办法

针对iOS 18、18.1及18.2测试版中PDFPage.characterBounds(at:)返回错误字符边界的问题,目前社区里有几个可尝试的临时方案:

  • 改用文本块级估算:如果业务对精度要求不是极致,可以结合PDFPage.bounds(for: .mediaBox)和页面完整文本PDFPage.string,根据文本长度和块边界手动拆分估算每个字符的位置,虽然精度不如原生方法,但能维持基本功能。
  • 基于Core Graphics手动解析:绕开PDFKit的上层API,直接用CGPDFPageRef获取页面的文本布局数据,自行实现字符边界的解析逻辑。示例代码框架如下:
func manualCharacterBounds(for page: PDFPage) -> [CGRect] {
    guard let cgPage = page.pageRef else { return [] }
    var characterBounds = [CGRect]()
    // 可参考Core Graphics中CGPDFContentStream相关API,实现文本遍历与字符位置提取
    return characterBounds
}
  • Vision框架辅助OCR:如果应用场景允许,用Vision框架对PDF页面进行OCR识别,从识别结果中获取准确的字符边界。这种方法适合对字符位置精度要求高的场景,但会增加一定的性能开销。

另外,由于iOS 17测试版曾出现过完全相同的问题并在测试周期末期修复,建议持续跟进Apple的测试版更新,同时可以在反馈FB14843671中补充更多复现细节(如复现用的PDF文件、设备型号),帮助Apple加快修复进度。

内容的提问来源于stack exchange,提问作者KlausM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:25:58