【问题标题】:Possible encoding issues with PDFDocumentPDFDocument 可能存在的编码问题
【发布时间】:2021-01-17 01:08:17
【问题描述】:

我在 Mac 应用程序(Xcode 11.7、10.15 部署目标)中使用 PDFKit 来查看 pdf。用户可以突出显示选择并复制文本或创建引号。

对于某些 pdf,我无法获得正确的高亮字符串内容。

获取以下 pdf:https://www.irs.gov/pub/irs-pdf/iw8bene.pdf。例如,如果在 Preview 中打开,则可以将内容复制并粘贴到 TextEdit 中。

如果我用 PDFView 打开这个 pdf,只能复制和粘贴一些文本(例如主标题),但正文只粘贴复制的空格!我没有自定义代码来处理我的 PDFView 上的副本。

如果我在突出显示文档时评估当前 PDFSelection,我会在字符串中得到空格和无意义的字符:

for character in pdfSelection.string!.unicodeScalars {
    print(character.value)
}

示例结果:

32
1113109
1113135
1113135
1113109
32
1113118
1113091
32

不管有什么问题,标准的复制代码也有问题,所以 PDFView 或 PDFDocument 上可能存在一些我缺少的设置问题?我只需在 Interface Builder 中创建一个 PDFView,然后打开一个带有 URL 的 PDFDocument 并将其设置在视图上。

【问题讨论】:

  • 这个问题在小型测试项目中是否可以重现?
  • @Willeke,它没有!我向所有人道歉。我会更新我的帖子。

标签: cocoa ios-pdfkit apple-pdfkit


【解决方案1】:

这个问题是在我的应用程序的其他地方引起的,但仍然与 PDFDocument 相关。将 pdf 拖动到我的应用程序时,我创建了一个 PDFDocument 来检查有效性,然后将该项目保存到应用程序的文件夹中:

guard let pdf = PDFDocument(url: fileURL) else { ... }
guard pdf.write(to: documentURL(forID: documentID, andType: .pdf)) else { ... }

正是文件的这种处理导致它被巧妙地修改/破坏。

基于 pdf 的复杂性,这对我来说太天真了。以后我会简单地复制原始文件。

【讨论】:

    猜你喜欢
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 2014-07-30
    • 2016-02-19
    • 2016-04-06
    相关资源
    最近更新 更多