首页 > 解决方案 > 当文本的方向不正确时,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. 

有没有办法在剥离文本之前检测方向,然后调整它以保留原始文档中的间距?

标签: javapdfbox

解决方案


ItFreak 上面的评论将我指向一个 stackoverflow 问题,其中的评论解决了该问题。所需要做的就是按如下方式设置 PdfStripper:

stripper.setSortByPosition(true)

一旦我这样做了,所有的间距都会在倒置和 90 度旋转的图像上恢复。


推荐阅读