Java ";“空的”;从PDF中提取的字符

Java ";“空的”;从PDF中提取的字符,java,character,pdfbox,Java,Character,Pdfbox,我最近尝试使用PDFBox从PDF文件中提取文本。它适用于大多数PDF,但对于一个PDF(不幸的是,我不允许共享),句子中的所有句点都不会被提取出来。相反,我得到的短语如下: ...what it would be It’ll be important later on... 它看起来不是一个周期空间,而是一个空间,但它不是(至少在MacOSX上)。如果将文本复制到文本编辑器中,并开始在短语中移动文本光标,则“英尺”中的“t”后面会有一个“空字符”。复制: 将光标放在“英尺”中字母“t”的正

我最近尝试使用PDFBox从PDF文件中提取文本。它适用于大多数PDF,但对于一个PDF(不幸的是,我不允许共享),句子中的所有句点都不会被提取出来。相反,我得到的短语如下:

...what it would be It’ll be important later on...
它看起来不是一个周期空间,而是一个空间,但它不是(至少在MacOSX上)。如果将文本复制到文本编辑器中,并开始在短语中移动文本光标,则“英尺”中的“t”后面会有一个“空字符”。复制:

  • 将光标放在“英尺”中字母“t”的正前方,然后按 右箭头键。光标向右移动一步
  • 再次按向右箭头键,您将停留在原地
  • 再按一次向右箭头键,您将继续到空间的另一侧
  • 继续按向右箭头键的行为符合预期
PDFBox似乎提取了某种“空字符”来代替句点。我尝试了几种不同的方法来替换它,但没有成功:

String oldText = text;
text = text.replace('\u0000', '.'); //Unicode null
text = text.replace('\0', '.'); //C null
System.out.println(oldText.equals(text)); //Returns true
//Also tried text.replace(null, '.'), but it doesn't compile
这个“空字符”是什么?我如何用应该存在的文本替换它


编辑:建议该字符可能是一个字符,如
\uFEFF
,但尝试用建议的正则表达式替换它不起作用。

在意识到该字符不是
\uFEFF
\u0000
后,其他堆栈溢出用户遇到的两个unicode值,我决定运行一个测试来弄清楚代码到底是什么。使用中的代码确定unicode值是什么,我发现神秘的字符是
\u0008
,即“”。我不知道为什么会从PDF中删除它,但是
text=text.replace(“\u0008”,”)
现在将它替换为缺少的句点。

您不能共享文档(并且觉得不得不这么说)这一事实使得摘录“他的脚向任何一个方向移动”有点令人毛骨悚然:-哈哈,是的!也许这不是最好的例子,因为这是断章取义的。我改变了这个例子。