Author: tilman Date: Tue Mar 11 07:01:31 2014 New Revision: 1576202 URL: http://svn.apache.org/r1576202 Log: PDFBOX-1946: catch SecurityException and resulting null values when run in an applet
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java?rev=1576202&r1=1576201&r2=1576202&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java Tue Mar 11 07:01:31 2014 @@ -70,15 +70,22 @@ public abstract class Encoding implement loadGlyphProperties("org/apache/pdfbox/resources/additional_glyphlist.properties"); // Load an external glyph list file that user can give as JVM property - String location = System.getProperty("glyphlist_ext"); - if (location != null) + try { - File external = new File(location); - if (external.exists()) + String location = System.getProperty("glyphlist_ext"); + if (location != null) { - loadGlyphProperties(location); + File external = new File(location); + if (external.exists()) + { + loadGlyphProperties(location); + } } } + catch (SecurityException e) // can occur on Sytem.getProperty + { + // PDFBOX-1946 ignore and continue + } NAME_TO_CHARACTER.put(NOTDEF, ""); NAME_TO_CHARACTER.put("fi", "fi"); Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java?rev=1576202&r1=1576201&r2=1576202&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java Tue Mar 11 07:01:31 2014 @@ -165,8 +165,19 @@ public abstract class BaseParser public BaseParser(InputStream input, boolean forceParsingValue) throws IOException { + int pushbacksize = 65536; + try + { + pushbacksize = Integer.getInteger(PROP_PUSHBACK_SIZE, 65536); + } + catch (SecurityException e) + { + // PDFBOX-1946 getInteger calls System.getProperties, + // which can get exception in an applet + // ignore and use default + } this.pdfSource = new PushBackInputStream( - new BufferedInputStream(input, 16384), Integer.getInteger( PROP_PUSHBACK_SIZE, 65536 ) ); + new BufferedInputStream(input, 16384), pushbacksize); this.forceParsing = forceParsingValue; } Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java?rev=1576202&r1=1576201&r2=1576202&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java Tue Mar 11 07:01:31 2014 @@ -334,15 +334,18 @@ public class PDFStreamEngine glyphSpaceToTextSpaceFactor = 1f / fontMatrix.getValue(0, 0); } float spaceWidthText = 0; - try - { - // to avoid crash as described in PDFBOX-614 - // lets see what the space displacement should be - spaceWidthText = (font.getSpaceWidth() * glyphSpaceToTextSpaceFactor); - } - catch (Throwable exception) + if (font != null) // PDFBOX-1946 font might still be null if in applet { - LOG.warn(exception, exception); + try + { + // to avoid crash as described in PDFBOX-614 + // lets see what the space displacement should be + spaceWidthText = (font.getSpaceWidth() * glyphSpaceToTextSpaceFactor); + } + catch (Throwable exception) + { + LOG.warn(exception, exception); + } } if (spaceWidthText == 0) Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java?rev=1576202&r1=1576201&r2=1576202&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java Tue Mar 11 07:01:31 2014 @@ -78,30 +78,39 @@ public class PDFTextStripper extends PDF // pdftextstripper.drop static { - String prop = thisClassName+".indent"; - String s = System.getProperty(prop); - if(s!=null && s.length()>0) + String sdrop = null, sindent = null; + try + { + String prop = thisClassName + ".indent"; + sindent = System.getProperty(prop); + prop = thisClassName + ".drop"; + sdrop = System.getProperty(prop); + } + catch (SecurityException e) + { + // PDFBOX-1946 when run in an applet + // ignore and use default + } + if (sindent != null && sindent.length() > 0) { try { - float f = Float.parseFloat(s); + float f = Float.parseFloat(sindent); DEFAULT_INDENT_THRESHOLD = f; } - catch(NumberFormatException nfe) + catch (NumberFormatException nfe) { - //ignore and use default + //ignore and use default } } - prop = thisClassName+".drop"; - s = System.getProperty(prop); - if(s!=null && s.length()>0) + if (sdrop != null && sdrop.length() > 0) { try { - float f = Float.parseFloat(s); + float f = Float.parseFloat(sdrop); DEFAULT_DROP_THRESHOLD = f; } - catch(NumberFormatException nfe) + catch (NumberFormatException nfe) { //ignore and use default } Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java?rev=1576202&r1=1576201&r2=1576202&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java Tue Mar 11 07:01:31 2014 @@ -51,8 +51,16 @@ public class ResourceLoader */ public static InputStream loadResource( String resourceName ) throws IOException { - ClassLoader loader = ResourceLoader.class.getClassLoader(); - + ClassLoader loader = null; + try + { + loader = ResourceLoader.class.getClassLoader(); + } + catch (SecurityException ex) + { + // ignore and try other alternatives + } + InputStream is = null; if( loader != null ) @@ -62,24 +70,31 @@ public class ResourceLoader //see sourceforge bug 863053, this is a fix for a user that //needed to have PDFBox loaded by the bootstrap classloader - if( is == null ) + try { - loader = ClassLoader.getSystemClassLoader(); - if( loader != null ) + if( is == null ) { - is = loader.getResourceAsStream( resourceName ); + loader = ClassLoader.getSystemClassLoader(); + if( loader != null ) + { + is = loader.getResourceAsStream( resourceName ); + } } - } - if( is == null ) - { - File f = new File( resourceName ); - if( f.exists() ) + if( is == null ) { - is = new FileInputStream( f ); + File f = new File( resourceName ); + if( f.exists() ) + { + is = new FileInputStream( f ); + } } } - + catch (SecurityException ex) + { + // PDFBOX-1946 ignore and continue + } + return is; }