我试图对我拥有的一堆相关 pdf 文档使用搜索功能,但由于某种原因,当我搜索“the”之类的简单内容时,什么也没有出现。
以下是我在尝试解决这个问题时学到的一些东西:
如果我直接从 PDF 复制粘贴文本到搜索框中,它会找到该字符串,但键盘输入无法进行搜索。
作为将 PDF 中的文本复制到浏览器或任何文本处理应用程序中时文本的样子的示例,我复制了以下文本:“作为工资部门的成员,您需要认识和理解工资发放过程中发生的各种流程。”
这是我实际复制粘贴后的样子:
我不知道,也许是编码问题?也许有一种方法可以打开 pdf,将其转换为键盘可以接受的相同类型的文本,以便我可以搜索所需的文本。
非常感谢所有帮助!
答案1
所有这些“字符”都属于 Unicode“私有使用区域”。与包含这些代码点字形的字体配合使用,它会显示为普通文本。
不过,这种混淆非常弱。让我们看看
,它应该是As
。代码点是\uF041
和\uF073
。巧合的是,“拉丁大写字母 A”有\u0041
,而“拉丁小写字母 S”有\u0073
。
您只需遍历所有代码点并减去/添加0xF000
以转换模糊文本。这将使您能够从文档中复制文本或在文档中搜索文本。
以下是一些解码文本的 JavaScript 代码:
{
let source = " ";
let decoded = source.replace(/./g, c => {
let cc = c.codePointAt(0);
return cc > 0xF000 ? String.fromCodePoint(cc - 0xF000) : c;
});
console.log(decoded);
}
换一种方式,只针对单个单词:
{
let source = "understand";
let coded = source.replace(/./g, c => String.fromCodePoint(c.codePointAt(0) + 0xF000));
console.log(coded);
}
这两个代码片段都严格基于给出的示例。如果存在其他编码问题,则代码需要进一步调整。
您可以在浏览器的开发者控制台中使用这些代码片段,通常可通过 访问F12。