Author: lehmi
Date: Sun Oct 22 11:29:42 2023
New Revision: 1913197
URL: http://svn.apache.org/viewvc?rev=1913197&view=rev
Log:
PDFBOX-5660: DRY refactoring
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/FDFParser.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFParser.java
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java?rev=1913197&r1=1913196&r2=1913197&view=diff
==============================================================================
---
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
(original)
+++
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/COSParser.java
Sun Oct 22 11:29:42 2023
@@ -34,6 +34,7 @@ import org.apache.commons.logging.LogFac
import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSNull;
import org.apache.pdfbox.cos.COSNumber;
@@ -44,6 +45,7 @@ import org.apache.pdfbox.cos.ICOSParser;
import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.io.RandomAccessRead;
import org.apache.pdfbox.io.RandomAccessReadView;
+import org.apache.pdfbox.io.RandomAccessStreamCache.StreamCacheCreateFunction;
import org.apache.pdfbox.pdfparser.XrefTrailerResolver.XRefType;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.DecryptionMaterial;
@@ -158,8 +160,7 @@ public class COSParser extends BaseParse
*/
public COSParser(RandomAccessRead source) throws IOException
{
- super(source);
- fileLen = source.length();
+ this(source, null, null, null);
}
/**
@@ -175,11 +176,47 @@ public class COSParser extends BaseParse
public COSParser(RandomAccessRead source, String password, InputStream
keyStore,
String keyAlias) throws IOException
{
+ this(source, password, keyStore, keyAlias, null);
+ }
+
+ /**
+ * Constructor for encrypted pdfs.
+ *
+ * @param source input representing the pdf.
+ * @param password password to be used for decryption.
+ * @param keyStore key store to be used for decryption when using public
key security
+ * @param keyAlias alias to be used for decryption when using public key
security
+ * @param streamCacheCreateFunction a function to create an instance of
the stream cache
+ *
+ * @throws IOException if the source data could not be read
+ */
+ public COSParser(RandomAccessRead source, String password, InputStream
keyStore,
+ String keyAlias, StreamCacheCreateFunction
streamCacheCreateFunction) throws IOException
+ {
super(source);
this.password = password;
this.keyAlias = keyAlias;
fileLen = source.length();
keyStoreInputStream = keyStore;
+ init(streamCacheCreateFunction);
+ }
+
+ private void init(StreamCacheCreateFunction streamCacheCreateFunction)
+ {
+ String eofLookupRangeStr = System.getProperty(SYSPROP_EOFLOOKUPRANGE);
+ if (eofLookupRangeStr != null)
+ {
+ try
+ {
+ setEOFLookupRange(Integer.parseInt(eofLookupRangeStr));
+ }
+ catch (NumberFormatException nfe)
+ {
+ LOG.warn("System property " + SYSPROP_EOFLOOKUPRANGE
+ + " does not contain an integer value, but: '" +
eofLookupRangeStr + "'");
+ }
+ }
+ document = new COSDocument(streamCacheCreateFunction, this);
}
/**
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/FDFParser.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/FDFParser.java?rev=1913197&r1=1913196&r2=1913197&view=diff
==============================================================================
---
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/FDFParser.java
(original)
+++
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/FDFParser.java
Sun Oct 22 11:29:42 2023
@@ -18,10 +18,7 @@ package org.apache.pdfbox.pdfparser;
import java.io.IOException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.io.RandomAccessRead;
@@ -29,8 +26,6 @@ import org.apache.pdfbox.pdmodel.fdf.FDF
public class FDFParser extends COSParser
{
- private static final Log LOG = LogFactory.getLog(FDFParser.class);
-
/**
* Constructs parser for given file using memory buffer.
*
@@ -41,25 +36,6 @@ public class FDFParser extends COSParser
public FDFParser(RandomAccessRead source) throws IOException
{
super(source);
- init();
- }
-
- private void init()
- {
- String eofLookupRangeStr = System.getProperty(SYSPROP_EOFLOOKUPRANGE);
- if (eofLookupRangeStr != null)
- {
- try
- {
- setEOFLookupRange(Integer.parseInt(eofLookupRangeStr));
- }
- catch (NumberFormatException nfe)
- {
- LOG.warn("System property " + SYSPROP_EOFLOOKUPRANGE
- + " does not contain an integer value, but: '" +
eofLookupRangeStr + "'");
- }
- }
- document = new COSDocument(this);
}
/**
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=1913197&r1=1913196&r2=1913197&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
Sun Oct 22 11:29:42 2023
@@ -24,7 +24,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.Loader;
import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.io.RandomAccessRead;
@@ -92,28 +91,9 @@ public class PDFParser extends COSParser
public PDFParser(RandomAccessRead source, String decryptionPassword,
InputStream keyStore,
String alias, StreamCacheCreateFunction streamCacheCreateFunction)
throws IOException
{
- super(source, decryptionPassword, keyStore, alias);
- init(streamCacheCreateFunction);
+ super(source, decryptionPassword, keyStore, alias,
streamCacheCreateFunction);
}
- private void init(StreamCacheCreateFunction streamCacheCreateFunction)
- {
- String eofLookupRangeStr = System.getProperty(SYSPROP_EOFLOOKUPRANGE);
- if (eofLookupRangeStr != null)
- {
- try
- {
- setEOFLookupRange(Integer.parseInt(eofLookupRangeStr));
- }
- catch (NumberFormatException nfe)
- {
- LOG.warn("System property " + SYSPROP_EOFLOOKUPRANGE
- + " does not contain an integer value, but: '" +
eofLookupRangeStr + "'");
- }
- }
- document = new COSDocument(streamCacheCreateFunction, this);
- }
-
/**
* The initial parse will first parse only the trailer, the xrefstart and
all xref tables to have a pointer (offset)
* to all the pdf's objects. It can handle linearized pdfs, which will
have an xref at the end pointing to an xref