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