使用Apache POI和Apache PDFBox阅读doc,pdf文件时错误定位的文本框

时间:2012-07-11 09:02:20

标签: java pdf apache-poi doc pdfbox

我试图通过使用 Apache POI (对于doc,docx)和 Apache PDFBox将它们转换为单个字符串来阅读和处理Java中的.doc,.docx,.pdf文件(对于pdf)库。
在遇到文本框之前它可以正常工作。 如果格式如下:

第1段
文本框1
第2段
文本框2
第3段
的 然后输出应该是:
第1段文本框1第2段文本框2第3段 但我得到的输出是: 第1段第2段第3段文本框1文本框2

它似乎是在最后添加文本框而不是它应该在的地方,即段落之间。在doc和pdf文件的情况下都存在此问题。这意味着库,POI和PDFBox都会出现同样的问题
阅读pdf文件的代码是:


    void pdf(String file) throws IOException {
        //Initialise file
        File myFile = new File(file);
        PDDocument pdDoc = null;
        try {
            //Load PDF
            pdDoc = PDDocument.load(myFile);
            //Create extractor
            PDFTextStripper pdf = new PDFTextStripper();
            //Extract text
            output = pdf.getText(pdDoc);
        }
        finally {
            if(pdDoc != null)
                //Close document
                pdDoc.close();
        }
    }

doc文件的代码是:


    void doc(String file) throws FileNotFoundException, IOException {
        File myFile = null;
        WordExtractor extractor = null ;
        //initialise file
        myFile = new File(file);
        //create file input stream
        FileInputStream fis=new FileInputStream(myFile.getAbsolutePath());
        //open document
        HWPFDocument document=new HWPFDocument(fis);
        //create extractor
        extractor = new WordExtractor(document);
        //get text from document
        output = extractor.getText();
    }

2 个答案:

答案 0 :(得分:2)

对于PDFBox,请执行以下操作:     pdf.setSortByPosition(真);

答案 1 :(得分:0)

尝试下面的pdf代码。您也可以类似的方式尝试使用doc。

for