缺少空格字符的原因是,您在渲染的PDF中看到的空格不一定与PDF页面内容描述中的空格相对应。取而代之的是,您通常会在PDF中找到一个 *** 作,该 *** 作在渲染一个单词后将当前位置稍微向右移,然后再渲染下一个单词。
不幸的是,同样的机制也被用来增强相邻字形的外观:在某些字母组合中,为了获得良好的外观和阅读体验,字形应比默认情况下更近或更远地打印。使用与上述相同的 *** 作在PDF中完成此 *** 作。
因此,在这种情况下,PDF解析器必须使用试探法来确定这种移位是否意味着暗含空格字符,还是仅意味着使字母组看起来更好。试探法可能会失败。
您
SimpleTextExtractionStrategy用作文本提取策略。这种情况下的试探法是这样实现的(如当前在iText
SVN干线
renderText中的SimpleTextExtractionStrategy.java中的方法中一样):
float spacing = lastEnd.subtract(start).length();if (spacing > renderInfo.getSingleSpaceWidth()/2f){ result.append(' ');}
因此,将至少是空格的当前宽度一半宽度的间隙转换为空格。
这通常听起来很明智。但是,在仅使用水平移位分隔单词的文档的情况下,实际空格字符的当前宽度对于启发式方法可能不是一个好方法。
因此,您可以做的是尝试改善文本提取策略中的启发式方法。复制现有代码,进行 *** 作,然后在代码中使用它。
如果为您的问题提供样本PDF,我们可能会提供一些帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)