以下代码为一个PDF而不是另一个PDF生成特殊字符而不是空格:
String fullText;
BodyContentHandler handler = null;
try {
// size is limit is 100M
handler = new BodyContentHandler(100 * 1024 * 1024);
Metadata meta = new Metadata();
PDFParser parser = new PDFParser();
parser.setEnableAutoSpace(false);
parser.parse(new FileInputStream(this.pdf /*always a valid pdf file*/), handler, meta, new ParseContext());
}
catch (SAXException e) {
throw new IOException(e);
} catch (TikaException e) {
throw new IOException(e);
}
fullText = handler.toString();
根据PDF的不同,fullText的子字符串将如下所示:
将*继续*到*是* *使用在*的支持* *的
当它看起来像这样:
将继续用于支持
在其他地方,'%'代替' - '和'!'在粗体文本中替换空格。
仅在处理一个PDF而不处理另一个PDF时才会出现此问题。根据pdfinfo,两个PDF都是由Quartz PDFContext生成的。
linux命令pdftotext呈现相同的结果。
这是原始PDF生成方式的问题吗?为什么会这样?