如何将多个pdf解析为Java中的文件夹中的文本

时间:2017-04-24 15:02:28

标签: java pdf

我有一个包含大量pdfs的文件夹,我需要将它们全部转换为txt并将这些文本文件保存在另一个文件夹中。我想用java来做这件事。

我有这个代码来解析一个pdf,但它只适用于一个,我需要处理一个包含数千个pdf的文件夹。

 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(20);
     String parsedText = pdfStripper.getText(pdDoc);
    }catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
 } 

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情

PDFTextStripper pdfStripper = null;
PDDocument pdDoc = null;
COSDocument cosDoc = null;
String parsedText=""; // append the text to this every time
File folder = new File("/yourFolder"); // put all the pdf files in a folder
File[] listOfFiles = folder.listFiles(); // get all the files as an array

    for (File file : listOfFiles) { // cycle through this array 
        if (file.isFile()) { // for every file
             try { //do the same 
                 PDFParser parser = new PDFParser(new FileInputStream(file));
                 parser.parse();
                 cosDoc = parser.getDocument();
                 pdfStripper = new PDFTextStripper();
                 pdDoc = new PDDocument(cosDoc);
                 pdfStripper.setStartPage(1);
                 pdfStripper.setEndPage(pdDoc.getNumberOfPages()); // if always till the last page
                 parsedText += pdfStripper.getText(pdDoc) +  System.lineSeparator(); // append the text to the String
                }catch (IOException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
               } 
       }
  }