You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2014/11/01 10:08:19 UTC
svn commit: r1635903 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox:
pdfparser/NonSequentialPDFParser.java pdmodel/fdf/FDFDocument.java
Author: lehmi
Date: Sat Nov 1 09:08:19 2014
New Revision: 1635903
URL: http://svn.apache.org/r1635903
Log:
PDFBOX-2468: switch FDFDocument to NonSequentialParser, enable FDF support within NonSequentialParser
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFDocument.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java?rev=1635903&r1=1635902&r2=1635903&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java Sat Nov 1 09:08:19 2014
@@ -441,10 +441,20 @@ public class NonSequentialPDFParser exte
throw new IOException("Missing root object specification in trailer.");
}
- parseObjectDynamically(root, false);
+ COSBase rootObject = parseObjectDynamically(root, false);
- // ---- resolve all objects (including pages)
- if (!parseMinimalCatalog)
+ // ---- resolve all objects
+ if (isFDFDocment)
+ {
+ // A FDF doesn't have a catalog, all FDF fields are within the root object
+ if (rootObject instanceof COSDictionary)
+ {
+ parseDictObjects((COSDictionary) rootObject, (COSName[]) null);
+ allPagesParsed = true;
+ document.setDecrypted();
+ }
+ }
+ else if(!parseMinimalCatalog)
{
COSObject catalogObj = document.getCatalog();
if (catalogObj != null)
@@ -903,18 +913,21 @@ public class NonSequentialPDFParser exte
initialParse();
}
- final int pageCount = getPageNumber();
-
- if (!allPagesParsed)
+ // a FDF doesn't have any pages
+ if (!isFDFDocment)
{
- for (int pNr = 0; pNr < pageCount; pNr++)
- {
- getPage(pNr);
- }
- allPagesParsed = true;
- document.setDecrypted();
+ final int pageCount = getPageNumber();
+
+ if (!allPagesParsed)
+ {
+ for (int pNr = 0; pNr < pageCount; pNr++)
+ {
+ getPage(pNr);
+ }
+ allPagesParsed = true;
+ document.setDecrypted();
+ }
}
-
exceptionOccurred = false;
}
finally
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFDocument.java?rev=1635903&r1=1635902&r2=1635903&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFDocument.java Sat Nov 1 09:08:19 2014
@@ -31,11 +31,8 @@ import java.io.Writer;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.cos.COSName;
-
-import org.apache.pdfbox.pdfparser.PDFParser;
-
+import org.apache.pdfbox.pdfparser.NonSequentialPDFParser;
import org.apache.pdfbox.pdfwriter.COSWriter;
-
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -43,8 +40,7 @@ import org.w3c.dom.Element;
* This is the in-memory representation of the FDF document. You need to call
* close() on this object when you are done using it!!
*
- * @author <a href="mailto:ben@benlitchfield.com">Ben Litchfield</a>
- * @version $Revision: 1.6 $
+ * @author Ben Litchfield
*/
public class FDFDocument implements Closeable
{
@@ -199,7 +195,7 @@ public class FDFDocument implements Clos
*/
public static FDFDocument load( InputStream input ) throws IOException
{
- PDFParser parser = new PDFParser( input );
+ NonSequentialPDFParser parser = new NonSequentialPDFParser(input, false);
parser.parse();
return parser.getFDFDocument();
}