Java 为什么PDFParser生成特殊字符而不是空格?
以下代码正在为一个PDF而不是另一个PDF生成特殊字符而不是空格:Java 为什么PDFParser生成特殊字符而不是空格?,java,pdf,apache-tika,pdftotext,Java,Pdf,Apache Tika,Pdftotext,以下代码正在为一个PDF而不是另一个PDF生成特殊字符而不是空格: String fullText; BodyContentHandler handler = null; try { // size is limit is 100M handler = new BodyContentHandler(100 * 1024 * 1024); Metadata meta = new Metadata();
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格式,全文的子字符串如下所示:
将*继续*用于*支持*的*中*
当它看起来像这样时:
将继续用于支持
在其他地方,“%”替换“-”和“!”在粗体文本中替换空格
此问题仅在处理一个PDF而不是另一个PDF时出现。根据pdfinfo,这两个PDF都是由Quartz PDFContext生成的
linux命令pdftotext呈现相同的结果
这是如何生成原始PDF的问题吗?为什么会发生这种情况?PDF文件中的字体对象可能不一致。请注意,在PDF中,glyth的视觉表示通常独立于它所表示的字符。如果您发布了一个不起作用的示例文件,同时告诉我们哪段文本不起作用,我们可能会提供更多信息。另外,请看一下这个问题:要进行更具体的分析,请提供一个示例pdf。