I encountered NullPointerExceptions when attempting to deal with some PDF files.

   RandomAccessFile raFile = new RandomAccessFile(inPdfFile, "r");
   COSDocument cosDocument = new COSDocument(raFile);
   PDDocument document = new PDDocument(cosDocument);
   int documentNumberOfPages = document.getNumberOfPages();

This results in:
java.lang.NullPointerException: null
        at 
org.apache.pdfbox.pdmodel.PDDocument.getDocumentCatalog(PDDocument.java:763) 
~[pdfbox-1.8.7.jar:na]
        at 
org.apache.pdfbox.pdmodel.PDDocument.getNumberOfPages(PDDocument.java:1423) 
~[pdfbox-1.8.7.jar:na]
        at 
com.pgac.jobs.mdr.agentsite.AgencySortHandler.handleSpoolFile(AgencySortHandler.java:891)
 [AgencySortHandler.class:na]

PDDocument.java:763 is here:
762            COSDictionary trailer = document.getTrailer();
763            COSBase dictionary = trailer.getDictionaryObject( COSName.ROOT );


This does not work either:
   PDDocumentCatalog documentCatalog = new PDDocumentCatalog(document);
   List<PDPage> pdPageList = documentCatalog.getAllPages();

So apparently my PDF files are NON-conformant and have NULL for a Trailer.

Is there another way to get the number of pages in this case?

Also, rather than throw a NPE, wouldn't it be a good idea to throw an Exception 
with a message indicating what is wrong with the input?


Reply via email to