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 2011/06/25 19:30:02 UTC
svn commit: r1139575 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java
Author: lehmi
Date: Sat Jun 25 17:30:01 2011
New Revision: 1139575
URL: http://svn.apache.org/viewvc?rev=1139575&view=rev
Log:
PDFBOX-1043: update the version info from the document catalog if available as proposed by Mehdi Houshmand
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java?rev=1139575&r1=1139574&r2=1139575&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java Sat Jun 25 17:30:01 2011
@@ -787,12 +787,38 @@ public class PDFParser extends BaseParse
COSDictionary parsedTrailer = parseCOSDictionary();
xrefTrailerResolver.setTrailer( parsedTrailer );
-
+
+ // The version can also be specified within the document /Catalog
+ readVersionInTrailer(parsedTrailer);
+
skipSpaces();
return true;
}
/**
+ * The document catalog can also have a /Version parameter which overrides the version specified
+ * in the header if, and only if it is greater.
+ *
+ * @param parsedTrailer the parsed catalog in the trailer
+ */
+ private void readVersionInTrailer(COSDictionary parsedTrailer)
+ {
+ COSObject root = (COSObject) parsedTrailer.getItem(COSName.ROOT);
+ if (root != null)
+ {
+ COSName version = (COSName) root.getItem(COSName.VERSION);
+ if (version != null)
+ {
+ float trailerVersion = Float.valueOf(version.getName());
+ if (trailerVersion > document.getVersion())
+ {
+ document.setVersion(trailerVersion);
+ }
+ }
+ }
+ }
+
+ /**
* Fills XRefTrailerResolver with data of given stream.
* Stream must be of type XRef.
* @param stream the stream to be read