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 2020/05/17 12:01:43 UTC

svn commit: r1877853 - in /pdfbox/trunk: examples/src/main/java/org/apache/pdfbox/examples/signature/ pdfbox/src/main/java/org/apache/pdfbox/ pdfbox/src/main/java/org/apache/pdfbox/io/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitals...

Author: lehmi
Date: Sun May 17 12:01:42 2020
New Revision: 1877853

URL: http://svn.apache.org/viewvc?rev=1877853&view=rev
Log:
PDFBOX-4837: rename RandomAccessBufferedFileInputStream to RandomAccessBufferedFile and don't extend InputStream any more 

Added:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBufferedFile.java
      - copied, changed from r1877852, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBufferedFileInputStream.java
Removed:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBufferedFileInputStream.java
Modified:
    pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/Loader.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureOptions.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfparser/TestPDFParser.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java

Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java?rev=1877853&r1=1877852&r2=1877853&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java Sun May 17 12:01:42 2020
@@ -56,7 +56,7 @@ import org.apache.pdfbox.cos.COSString;
 import org.apache.pdfbox.examples.signature.cert.CertificateVerificationException;
 import org.apache.pdfbox.examples.signature.cert.CertificateVerifier;
 import org.apache.pdfbox.io.IOUtils;
-import org.apache.pdfbox.io.RandomAccessBufferedFileInputStream;
+import org.apache.pdfbox.io.RandomAccessBufferedFile;
 import org.apache.pdfbox.pdfparser.PDFParser;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
@@ -136,7 +136,7 @@ public final class ShowSignature
             File infile = new File(args[1]);
             // use old-style document loading to disable leniency
             // see also https://www.pdf-insecurity.org/
-            RandomAccessBufferedFileInputStream raFile = new RandomAccessBufferedFileInputStream(infile);
+            RandomAccessBufferedFile raFile = new RandomAccessBufferedFile(infile);
             // If your files are not too large, you can also download the PDF into a byte array
             // with IOUtils.toByteArray() and pass a RandomAccessBuffer() object to the
             // PDFParser constructor.
@@ -302,7 +302,7 @@ public final class ShowSignature
         // comment by mkl: check whether gap contains a hex value equal
         // byte-by-byte to the Content value, to prevent attacker from using a literal string
         // to allow extra space
-        try (RandomAccessBufferedFileInputStream raf = new RandomAccessBufferedFileInputStream(file))
+        try (RandomAccessBufferedFile raf = new RandomAccessBufferedFile(file))
         {
             raf.seek(byteRange[1]);
             int c = raf.read();

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/Loader.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/Loader.java?rev=1877853&r1=1877852&r2=1877853&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/Loader.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/Loader.java Sun May 17 12:01:42 2020
@@ -26,7 +26,7 @@ import java.io.InputStream;
 import org.apache.pdfbox.io.IOUtils;
 import org.apache.pdfbox.io.MemoryUsageSetting;
 import org.apache.pdfbox.io.RandomAccessBuffer;
-import org.apache.pdfbox.io.RandomAccessBufferedFileInputStream;
+import org.apache.pdfbox.io.RandomAccessBufferedFile;
 import org.apache.pdfbox.io.RandomAccessRead;
 import org.apache.pdfbox.io.ScratchFile;
 import org.apache.pdfbox.pdfparser.FDFParser;
@@ -297,7 +297,7 @@ public class Loader
             MemoryUsageSetting memUsageSetting) throws IOException
     {
         @SuppressWarnings({ "squid:S2095" }) // raFile not closed here, may be needed for signing
-        RandomAccessBufferedFileInputStream raFile = new RandomAccessBufferedFileInputStream(file);
+        RandomAccessBufferedFile raFile = new RandomAccessBufferedFile(file);
         try
         {
             return Loader.loadPDF(raFile, password, keyStore, alias, memUsageSetting);
@@ -309,7 +309,20 @@ public class Loader
         }
     }
 
-    public static PDDocument loadPDF(RandomAccessBufferedFileInputStream raFile, String password,
+    /**
+     * Parses a PDF.
+     * 
+     * @param rafile random access read representing the pdf to be loaded
+     * @param password password to be used for decryption
+     * @param keyStore key store to be used for decryption when using public key security
+     * @param alias alias to be used for decryption when using public key security
+     * @param memUsageSetting defines how memory is used for buffering PDF streams
+     * 
+     * @return loaded document
+     * 
+     * @throws IOException in case of a file reading or parsing error
+     */
+    public static PDDocument loadPDF(RandomAccessRead raFile, String password,
             InputStream keyStore, String alias, MemoryUsageSetting memUsageSetting)
             throws IOException
     {

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBufferedFile.java (from r1877852, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBufferedFileInputStream.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBufferedFile.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBufferedFile.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBufferedFileInputStream.java&r1=1877852&r2=1877853&rev=1877853&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBufferedFileInputStream.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/RandomAccessBufferedFile.java Sun May 17 12:01:42 2020
@@ -25,17 +25,14 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
- * Provides {@link InputStream} access to portions of a file combined with
- * buffered reading of content. Start of next bytes to read can be set via seek
- * method.
+ * Provides random access to portions of a file combined with buffered reading of content. Start of next bytes to read
+ * can be set via seek method.
  * 
- * File is accessed via {@link RandomAccessFile} and is read in byte chunks
- * which are cached.
+ * File is accessed via {@link RandomAccessFile} and is read in byte chunks which are cached.
  * 
  * @author Timo Boehme
  */
-public class RandomAccessBufferedFileInputStream
-extends InputStream implements RandomAccessRead
+public class RandomAccessBufferedFile implements RandomAccessRead
 {
     /**
      * The prefix for the temp file being used. 
@@ -78,23 +75,23 @@ extends InputStream implements RandomAcc
     private boolean isClosed;
     
     /**
-     * Create a random access input stream instance for the file with the given name.
+     * Create a random access buffered file instance for the file with the given name.
      *
      * @param filename the filename of the file to be read.
      * @throws IOException if something went wrong while accessing the given file.
      */
-    public RandomAccessBufferedFileInputStream( String filename ) throws IOException 
+    public RandomAccessBufferedFile( String filename ) throws IOException 
     {
         this(new File(filename));
     }
 
-    /** 
-     * Create a random access input stream instance for the given file.
+    /**
+     * Create a random access buffered file instance for the given file.
      *
      * @param file the file to be read.
      * @throws IOException if something went wrong while accessing the given file.
      */
-    public RandomAccessBufferedFileInputStream( File file ) throws IOException 
+    public RandomAccessBufferedFile( File file ) throws IOException 
     {
         raFile = new RandomAccessFile(file, "r");
         fileLength = file.length();
@@ -102,13 +99,12 @@ extends InputStream implements RandomAcc
     }
 
     /**
-     * Create a random access input stream for the given input stream by copying the data to a
-     * temporary file.
+     * Create a random access buffered file for the given input stream by copying the data to a temporary file.
      *
      * @param input the input stream to be read. It will be closed by this method.
      * @throws IOException if something went wrong while creating the temporary file.
      */
-    public RandomAccessBufferedFileInputStream( InputStream input ) throws IOException 
+    public RandomAccessBufferedFile( InputStream input ) throws IOException 
     {
         tempFile = createTmpFile(input);
         fileLength = tempFile.length();
@@ -267,32 +263,6 @@ extends InputStream implements RandomAcc
     }
     
     @Override
-    public long skip( long n ) throws IOException
-    {
-        // test if we have to reduce skip count because of EOF
-        long toSkip = n;
-
-        if ( fileLength - fileOffset < toSkip )
-        {
-            toSkip = fileLength - fileOffset;
-        }
-
-        if ( ( toSkip < pageSize ) && ( ( offsetWithinPage + toSkip ) <= pageSize ) )
-        {
-            // we can skip within current page
-            offsetWithinPage += toSkip;
-            fileOffset += toSkip;
-        }
-        else
-        {
-            // seek to the page we will get after skipping
-            seek( fileOffset + toSkip );
-        }
-
-        return toSkip;
-    }
-    
-    @Override
     public long length() throws IOException
     {
         return fileLength;

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureOptions.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureOptions.java?rev=1877853&r1=1877852&r2=1877853&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureOptions.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/SignatureOptions.java Sun May 17 12:01:42 2020
@@ -23,7 +23,7 @@ import java.io.InputStream;
 
 import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.io.RandomAccessBuffer;
-import org.apache.pdfbox.io.RandomAccessBufferedFileInputStream;
+import org.apache.pdfbox.io.RandomAccessBufferedFile;
 import org.apache.pdfbox.io.RandomAccessRead;
 import org.apache.pdfbox.pdfparser.PDFParser;
 import org.apache.pdfbox.pdmodel.interactive.digitalsignature.visible.PDVisibleSigProperties;
@@ -79,7 +79,7 @@ public class SignatureOptions implements
      */
     public void setVisualSignature(File file) throws IOException
     {
-        initFromRandomAccessRead(new RandomAccessBufferedFileInputStream(file));
+        initFromRandomAccessRead(new RandomAccessBufferedFile(file));
     }
 
     /**

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfparser/TestPDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfparser/TestPDFParser.java?rev=1877853&r1=1877852&r2=1877853&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfparser/TestPDFParser.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfparser/TestPDFParser.java Sun May 17 12:01:42 2020
@@ -32,7 +32,7 @@ import java.net.URISyntaxException;
 
 import org.apache.pdfbox.Loader;
 import org.apache.pdfbox.io.MemoryUsageSetting;
-import org.apache.pdfbox.io.RandomAccessBufferedFileInputStream;
+import org.apache.pdfbox.io.RandomAccessBufferedFile;
 import org.apache.pdfbox.io.RandomAccessRead;
 import org.apache.pdfbox.io.ScratchFile;
 import org.apache.pdfbox.pdmodel.PDDocument;
@@ -92,25 +92,25 @@ public class TestPDFParser
     @Test
     public void testPDFParserFile() throws IOException
     {
-        executeParserTest(new RandomAccessBufferedFileInputStream(new File(PATH_OF_PDF)), MemoryUsageSetting.setupMainMemoryOnly());
+        executeParserTest(new RandomAccessBufferedFile(new File(PATH_OF_PDF)), MemoryUsageSetting.setupMainMemoryOnly());
     }
 
     @Test
     public void testPDFParserInputStream() throws IOException
     {
-        executeParserTest(new RandomAccessBufferedFileInputStream(new FileInputStream(PATH_OF_PDF)), MemoryUsageSetting.setupMainMemoryOnly());
+        executeParserTest(new RandomAccessBufferedFile(new FileInputStream(PATH_OF_PDF)), MemoryUsageSetting.setupMainMemoryOnly());
     }
 
     @Test
     public void testPDFParserFileScratchFile() throws IOException
     {
-        executeParserTest(new RandomAccessBufferedFileInputStream(new File(PATH_OF_PDF)), MemoryUsageSetting.setupTempFileOnly());
+        executeParserTest(new RandomAccessBufferedFile(new File(PATH_OF_PDF)), MemoryUsageSetting.setupTempFileOnly());
     }
 
     @Test
     public void testPDFParserInputStreamScratchFile() throws IOException
     {
-        executeParserTest(new RandomAccessBufferedFileInputStream(new FileInputStream(PATH_OF_PDF)), MemoryUsageSetting.setupTempFileOnly());
+        executeParserTest(new RandomAccessBufferedFile(new FileInputStream(PATH_OF_PDF)), MemoryUsageSetting.setupTempFileOnly());
     }
     
     @Test

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java?rev=1877853&r1=1877852&r2=1877853&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java Sun May 17 12:01:42 2020
@@ -40,7 +40,7 @@ import org.apache.pdfbox.cos.COSObject;
 import org.apache.pdfbox.cos.COSObjectKey;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.cos.COSString;
-import org.apache.pdfbox.io.RandomAccessBufferedFileInputStream;
+import org.apache.pdfbox.io.RandomAccessBufferedFile;
 import org.apache.pdfbox.io.ScratchFile;
 import org.apache.pdfbox.pdfparser.PDFParser;
 import org.apache.pdfbox.pdfparser.XrefTrailerResolver.XRefType;
@@ -100,7 +100,7 @@ public class PreflightParser extends PDF
      */
     public PreflightParser(File file) throws IOException
     {
-        super(new RandomAccessBufferedFileInputStream(file));
+        super(new RandomAccessBufferedFile(file));
     }
 
     /**
@@ -112,7 +112,7 @@ public class PreflightParser extends PDF
      */
     public PreflightParser(File file, ScratchFile scratch) throws IOException
     {
-        super(new RandomAccessBufferedFileInputStream(file), scratch);
+        super(new RandomAccessBufferedFile(file), scratch);
     }
 
     /**