org.apache.pdfbox.pdfparser

## Class PDFParser

- java.lang.Object
- - org.apache.pdfbox.pdfparser.BaseParser
  - - org.apache.pdfbox.pdfparser.COSParser
    - - org.apache.pdfbox.pdfparser.PDFParser

    public class PDFParser
    extends COSParser

### Field Summary

### Fields inherited from class org.apache.pdfbox.pdfparser.COSParser

`EOF_MARKER, fileLen, initialParseDone, OBJ_MARKER, securityHandler, source, SYSPROP_EOFLOOKUPRANGE, SYSPROP_PARSEMINIMAL, TMP_FILE_PREFIX, xrefTrailerResolver`

### Fields inherited from class org.apache.pdfbox.pdfparser.BaseParser

`A, ASCII_CR, ASCII_LF, B, D, DEF, document, E, ENDOBJ_STRING, ENDSTREAM_STRING, J, M, N, O, R, S, STREAM_STRING, T`

### Constructor Summary

Constructors
Constructor and Description
`PDFParser(RandomAccessRead source)` Constructor.
`PDFParser(RandomAccessRead source, ScratchFile scratchFile)` Constructor.
`PDFParser(RandomAccessRead source, String decryptionPassword)` Constructor.
`PDFParser(RandomAccessRead source, String decryptionPassword, InputStream keyStore, String alias)` Constructor.
`PDFParser(RandomAccessRead source, String decryptionPassword, InputStream keyStore, String alias, ScratchFile scratchFile)` Constructor.
`PDFParser(RandomAccessRead source, String decryptionPassword, ScratchFile scratchFile)` Constructor.

### Method Summary

All Methods Instance Methods Concrete Methods
`PDDocument` `getPDDocument()` This will get the PD document that was parsed.
`protected void` `initialParse()` The initial parse will first parse only the trailer, the xrefstart and all xref tables to have a pointer (offset) to all the pdf's objects.
`void` `parse()` This will parse the stream and populate the COSDocument object.

### Methods inherited from class org.apache.pdfbox.pdfparser.COSParser

`checkPages, getAccessPermission, getDocument, getEncryption, getStartxrefOffset, isCatalog, isLenient, lastIndexOf, parseCOSStream, parseDictObjects, parseFDFHeader, parseObjectDynamically, parseObjectDynamically, parsePDFHeader, parseTrailerValuesDynamically, parseXref, parseXrefTable, rebuildTrailer, retrieveTrailer, setEOFLookupRange, setLenient`

### Methods inherited from class org.apache.pdfbox.pdfparser.BaseParser

`isClosing, isClosing, isDigit, isDigit, isEndOfName, isEOL, isEOL, isSpace, isSpace, isWhitespace, isWhitespace, parseBoolean, parseCOSArray, parseCOSDictionary, parseCOSName, parseCOSString, parseDirObject, readExpectedChar, readExpectedString, readExpectedString, readGenerationNumber, readInt, readLine, readLong, readObjectNumber, readString, readString, readStringNumber, skipLinebreak, skipSpaces, skipWhiteSpaces`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### PDFParser

    public PDFParser(RandomAccessRead source)
              throws IOException

Constructor. Unrestricted main memory will be used for buffering PDF streams.

Parameters:
  `source` - source representing the pdf.
Throws:
  `IOException` - If something went wrong.

#### PDFParser

    public PDFParser(RandomAccessRead source,
                     ScratchFile scratchFile)
              throws IOException

Constructor.

Parameters:
  `source` - input representing the pdf.
  `scratchFile` - use a `ScratchFile` for temporary storage.
Throws:
  `IOException` - If something went wrong.

#### PDFParser

    public PDFParser(RandomAccessRead source,
                     String decryptionPassword)
              throws IOException

Constructor. Unrestricted main memory will be used for buffering PDF streams.

Parameters:
  `source` - input representing the pdf.
  `decryptionPassword` - password to be used for decryption.
Throws:
  `IOException` - If something went wrong.

#### PDFParser

    public PDFParser(RandomAccessRead source,
                     String decryptionPassword,
                     ScratchFile scratchFile)
              throws IOException

Constructor.

Parameters:
  `source` - input representing the pdf.
  `decryptionPassword` - password to be used for decryption.
  `scratchFile` - use a `ScratchFile` for temporary storage.
Throws:
  `IOException` - If something went wrong.

#### PDFParser

    public PDFParser(RandomAccessRead source,
                     String decryptionPassword,
                     InputStream keyStore,
                     String alias)
              throws IOException

Constructor. Unrestricted main memory will be used for buffering PDF streams.

Parameters:
  `source` - input representing the pdf.
  `decryptionPassword` - password to be used for decryption.
  `keyStore` - key store to be used for decryption when using public key security
  `alias` - alias to be used for decryption when using public key security
Throws:
  `IOException` - If something went wrong.

#### PDFParser

    public PDFParser(RandomAccessRead source,
                     String decryptionPassword,
                     InputStream keyStore,
                     String alias,
                     ScratchFile scratchFile)
              throws IOException

Constructor.

Parameters:
  `source` - input representing the pdf.
  `decryptionPassword` - password to be used for decryption.
  `keyStore` - key store to be used for decryption when using public key security
  `alias` - alias to be used for decryption when using public key security
  `scratchFile` - buffer handler for temporary storage; it will be closed on `COSDocument.close()`
Throws:
  `IOException` - If something went wrong.

### Method Detail

#### getPDDocument

    public PDDocument getPDDocument()
                             throws IOException

This will get the PD document that was parsed. When you are done with this document you must call close() on it to release resources.

Returns:
  The document at the PD layer.
Throws:
  `IOException` - If there is an error getting the document.

#### initialParse

    protected void initialParse()
                         throws IOException

The initial parse will first parse only the trailer, the xrefstart and all xref tables to have a pointer (offset) to all the pdf's objects. It can handle linearized pdfs, which will have an xref at the end pointing to an xref at the beginning of the file. Last the root object is parsed.

Throws:
  `InvalidPasswordException` - If the password is incorrect.
  `IOException` - If something went wrong.

#### parse

    public void parse()
               throws IOException

This will parse the stream and populate the COSDocument object. This will close the keystore stream when it is done parsing.

Throws:
  `InvalidPasswordException` - If the password is incorrect.
  `IOException` - If there is an error reading from the stream or corrupt data is found.