PDFDocument

问题描述

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

对于一些pdf文件,我无法获得正确的亮点字符串内容。

采用以下pdf格式:https://www.irs.gov/pub/irs-pdf/iw8bene.pdf。例如,如果在“预览”中打开它,则可以将内容复制并粘贴到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并将其设置在视图上即可。

解决方法

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

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

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

基于pdf的复杂性,这对我来说太幼稚了。以后我将只复制原始文件。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...