java - 当文本的方向不正确时,PdfBox 会删除空格
问题描述
下面的代码是网上找到的 PdfBox 的简单演示:
public class PDFReader {
public static void main(String args[]) {
PDFTextStripper pdfStripper = null;
PDDocument pdDoc = null;
COSDocument cosDoc = null;
File file = new File("C:/my.pdf");
try {
PDFParser parser = new PDFParser(new FileInputStream(file));
parser.parse();
cosDoc = parser.getDocument();
pdfStripper = new PDFTextStripper();
pdDoc = new PDDocument(cosDoc);
pdfStripper.setStartPage(1);
pdfStripper.setEndPage(5);
String parsedText = pdfStripper.getText(pdDoc);
System.out.println(parsedText);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
除非文本的方向不正确,否则代码工作得很好。例如:给定一个带有文本的 pdf 文件:“快速的棕色狐狸跳过了懒惰的狗。” 文本颠倒的 pdf 将呈现为Thequickbrownfoxjumpedoverthelazydog
如果旋转 90 度,则文本如下所示:
T
h
e
q
u
i
c
k
etc.
有没有办法在剥离文本之前检测方向,然后调整它以保留原始文档中的间距?
解决方案
ItFreak 上面的评论将我指向一个 stackoverflow 问题,其中的评论解决了该问题。所需要做的就是按如下方式设置 PdfStripper:
stripper.setSortByPosition(true)
一旦我这样做了,所有的间距都会在倒置和 90 度旋转的图像上恢复。