How to extract text from a PDF file with Apache PDFBox

java, pdfbox

Solution

I executed your code and it worked properly. Maybe your problem is related to `FilePath` that you have given to file. I put my pdf in C drive and hard coded the file path. Here is my code:

// PDFBox 2.0.8 require org.apache.pdfbox.io.RandomAccessRead
// import org.apache.pdfbox.io.RandomAccessFile;

public class PDFReader{
    public static void main(String args[]) throws IOException {
        PDFTextStripper pdfStripper = null;
        PDDocument pdDoc = null;
        File file = new File("C:/my.pdf");
        PDFParser parser = new PDFParser(new FileInputStream(file));
        parser.parse();
        try (COSDocument 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);
        }
    }
}

Problem

I would like to extract text from a given PDF file with Apache PDFBox. I wrote this code: ``` PDFTextStripper pdfStripper = null; PDDocument pdDoc = null; COSDocument cosDoc = null; File file = new File(filepath); 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); ``` However, I got the following error: ``` Exception in thread "main" java.lang.NullPointerException at org.apache.fontbox.afm.AFMParser.main(AFMParser.java:304) ``` I added pdfbox-1.8.5.jar and fontbox-1.8.5.jar to the class path. Edit I added `System.out.println("program starts");` to the beginning of the program. I ran it, then I got the same error as mentioned above and `program starts` did not appear in the console. Thus, I think I have a problem with the class path or something. Thank you.

Original source