Index: src/main/java/org/apache/pdfbox/exceptions/LoggingObject.java
===================================================================
--- src/main/java/org/apache/pdfbox/exceptions/LoggingObject.java	(revision 763250)
+++ src/main/java/org/apache/pdfbox/exceptions/LoggingObject.java	(working copy)
@@ -55,7 +55,7 @@
 
             I recommend INFO for debug builds and either SEVERE or OFF for production builds.
             */
-            logger_.setLevel(Level.OFF);
+            logger_.setLevel(Level.WARNING);
     	}
 
     	return logger_;
Index: src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
===================================================================
--- src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java	(revision 763250)
+++ src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java	(working copy)
@@ -585,6 +585,21 @@
     {
         return load( url.openStream() );
     }
+    /**
+     * This will load a document from a url. Used for skipping corrupt
+     * pdf objects
+     *
+     * @param url The url to load the PDF from.
+     * @param force When true, the parser will skip corrupt pdf objects and 
+     * will continue parsing at the next object in the file
+     *
+     * @return The document that was loaded.
+     *
+     * @throws IOException If there is an error reading from the stream.
+     */
+    public static PDDocument load(URL url, boolean force) throws IOException{
+        return load(url.openStream(), force);
+    }
 
     /**
      * This will load a document from a url.
@@ -614,6 +629,22 @@
     {
         return load( new FileInputStream( filename ) );
     }
+    
+    /**
+     * This will load a document from a file. Allows for skipping corrupt pdf
+     * objects
+     *
+     * @param filename The name of the file to load.
+     * @param force When true, the parser will skip corrupt pdf objects and 
+     * will continue parsing at the next object in the file
+     *
+     * @return The document that was loaded.
+     *
+     * @throws IOException If there is an error reading from the stream.
+     */
+    public static PDDocument load(String filename, boolean force) throws IOException{
+        return load(new FileInputStream( filename ), force);
+    }
 
     /**
      * This will load a document from a file.
@@ -675,8 +706,24 @@
 
     /**
      * This will load a document from an input stream.
+     * Allows for skipping corrupt pdf objects
      *
      * @param input The stream that contains the document.
+     * @param force When true, the parser will skip corrupt pdf objects and 
+     * will continue parsing at the next object in the file
+     *
+     * @return The document that was loaded.
+     *
+     * @throws IOException If there is an error reading from the stream.
+     */
+    public static PDDocument load(InputStream input, boolean force) throws IOException{
+        return load(input, null, force);
+    }
+    
+    /**
+     * This will load a document from an input stream.
+     *
+     * @param input The stream that contains the document.
      * @param scratchFile A location to store temp PDFBox data for this document.
      *
      * @return The document that was loaded.
@@ -689,6 +736,24 @@
         parser.parse();
         return parser.getPDDocument();
     }
+    
+    /**
+     * This will load a document from an input stream. Allows for skipping corrupt pdf objects
+     * 
+     * @param input The stream that contains the document.
+     * @param scratchFile A location to store temp PDFBox data for this document.
+     * @param force When true, the parser will skip corrupt pdf objects and 
+     * will continue parsing at the next object in the file
+     *
+     * @return The document that was loaded.
+     *
+     * @throws IOException If there is an error reading from the stream.
+     */
+    public static PDDocument load(InputStream input, RandomAccess scratchFile, boolean force) throws IOException{
+        PDFParser parser = new PDFParser( new BufferedInputStream( input ), scratchFile, force);
+        parser.parse();
+        return parser.getPDDocument();
+    }
 
     /**
      * This will save this document to the filesystem.
Index: src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java
===================================================================
--- src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java	(revision 763250)
+++ src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java	(working copy)
@@ -20,13 +20,16 @@
 import java.io.InputStream;
 import java.io.IOException;
 
+import java.rmi.server.LogStream;
 import java.util.Iterator;
+import java.util.logging.Level;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSObject;
 import org.apache.pdfbox.cos.COSStream;
+import org.apache.pdfbox.exceptions.LoggingObject;
 import org.apache.pdfbox.exceptions.WrappedIOException;
 import org.apache.pdfbox.io.RandomAccess;
 
@@ -49,6 +52,7 @@
     private static final String PDF_HEADER = "%PDF-";
     private static final String FDF_HEADER = "%FDF-";
     private COSDocument document;
+    private boolean forceParsing = false;
 
     /**
      * Temp file directory.
@@ -82,6 +86,23 @@
         super(input);
         this.raf = rafi;
     }
+    
+    /**
+     * Constructor to allow control over RandomAccessFile.
+     * Also enables parser to skip corrupt objects to try and force parsing
+     * @param input The input stream that contains the PDF document.
+     * @param rafi The RandomAccessFile to be used in internal COSDocument
+     * @param force When true, the parser will skip corrupt pdf objects and 
+     * will continue parsing at the next object in the file
+     *
+     * @throws IOException If there is an error initializing the stream.
+     */
+    public PDFParser(InputStream input, RandomAccess rafi, boolean force)
+        throws IOException{
+        super(input);
+        this.raf = rafi;
+        this.forceParsing = force;
+    }
 
     /**
      * This is the directory where pdfbox will create a temporary file
@@ -134,8 +155,22 @@
                     if(pdfSource.isEOF()){
                         break;
                     }
-                    wasLastParsedObjectEOF = parseObject();
-                    
+                    try{
+                        wasLastParsedObjectEOF = parseObject();
+                    }
+                    catch(IOException e){
+                        if(forceParsing){
+                            /*
+                             * Warning is sent to the PDFBox.log and to the Console that
+                             * we skipped over an object
+                             */
+                            logger().log(Level.WARNING ,"Parsing Error, Skipping Object", e);
+                            skipToNextObj();
+                        }
+                        else{ 
+                            throw e;
+                        }
+                    }
                     skipSpaces();
                 }
                 //Test if we saw a trailer section. If not, look for an XRef Stream (Cross-Reference Stream) 
@@ -187,23 +222,49 @@
             pdfSource.close();
         }
     }
+    /**
+     * This code ensures that we are at the right point in the stream
+     * if we find an IOException when parsing. We're assuming that most of the
+     * lines in the file are formatted properly so that eventually we will get to
+     * a properly formatted object. 
+     * @throws IOException 
+     */
+    private void skipToNextObj() throws IOException {
+        String s = "";
+        while(!pdfSource.isEOF()){
+             s = readLine();
+             if(s.startsWith("trailer") ||
+                s.matches("\\d* *\\d* *obj") || s.startsWith("xref") || 
+                s.startsWith("startxref") ||
+                s.startsWith("stream")){
+                 byte[] array = s.getBytes();
+                 /* Add back the newLine char to the pdfSource since readLine
+                  * removed it.
+                  */
+                 int i = '\n';
+                 pdfSource.unread(i);
+                 pdfSource.unread(array);
+                 break;
+             }
+        }   
+    }
 
     private   void  parseHeader()  throws  IOException
     {
-    	// read first line
-    	String header = readLine();
-    	// some pdf-documents are broken and the pdf-version is in one of the following lines
-    	if ((header.indexOf( PDF_HEADER ) == -1) && (header.indexOf( FDF_HEADER ) == -1)) 
-    	{
-    	    header = readLine();
-    	    while ((header.indexOf( PDF_HEADER ) == -1) && (header.indexOf( FDF_HEADER ) == -1))
-    	    {
-    	        // if a line starts with a digit, it has to be the first one with data in it
-    	        if (Character.isDigit (header.charAt(0)))
-    	            break ;
-    	        header = readLine();
-    	    }
-    	}
+        // read first line
+        String header = readLine();
+        // some pdf-documents are broken and the pdf-version is in one of the following lines
+        if ((header.indexOf( PDF_HEADER ) == -1) && (header.indexOf( FDF_HEADER ) == -1)) 
+        {
+            header = readLine();
+            while ((header.indexOf( PDF_HEADER ) == -1) && (header.indexOf( FDF_HEADER ) == -1))
+            {
+                // if a line starts with a digit, it has to be the first one with data in it
+                if (Character.isDigit (header.charAt(0)))
+                    break ;
+                header = readLine();
+            }
+        }
 
         // nothing found
         if ((header.indexOf( PDF_HEADER ) == -1) && (header.indexOf( FDF_HEADER ) == -1))
Index: src/main/java/org/apache/pdfbox/ExtractText.java
===================================================================
--- src/main/java/org/apache/pdfbox/ExtractText.java	(revision 763250)
+++ src/main/java/org/apache/pdfbox/ExtractText.java	(working copy)
@@ -46,6 +46,7 @@
     private static final String END_PAGE = "-endPage";
     private static final String SORT = "-sort";
     private static final String HTML = "-html";  // jjb - added simple HTML output
+    private static final String FORCE = "-force"; //enables pdfbox to skip corrupt objects
 
     /**
      * private constructor.
@@ -66,6 +67,7 @@
     {
         boolean toConsole = false;
         boolean toHTML = false;
+        boolean force = false;
         boolean sort = false;
         String password = "";
         String encoding = null;
@@ -126,6 +128,10 @@
             {
                 toConsole = true;
             }
+            else if( args[i].equals( FORCE ) )
+            {
+                force = true;
+            }
             else
             {
                 if( pdfFile == null )
@@ -155,7 +161,7 @@
                     //basically try to load it from a url first and if the URL
                     //is not recognized then try to load it from the file system.
                     URL url = new URL( pdfFile );
-                    document = PDDocument.load( url );
+                    document = PDDocument.load(url, force);
                     String fileName = url.getFile();
                     if( outputFile == null && fileName.length() >4 )
                     {
@@ -164,7 +170,7 @@
                 }
                 catch( MalformedURLException e )
                 {
-                    document = PDDocument.load( pdfFile );
+                    document = PDDocument.load(pdfFile, force);
                     if( outputFile == null && pdfFile.length() >4 )
                     {
                         outputFile = pdfFile.substring( 0, pdfFile.length() -4 ) + ext;
@@ -245,6 +251,7 @@
             "  -console                     Send text to console instead of file\n" +
             "  -html                        Output in HTML format instead of raw text\n" +
             "  -sort                        Sort the text before writing\n" +
+            "  -force                       Enables pdfbox to ignore corrupt objects\n" +
             "  -startPage <number>          The first page to start extraction(1 based)\n" +
             "  -endPage <number>            The last page to extract(inclusive)\n" +
             "  <PDF file>                   The PDF document to use\n" +
