Package org.apache.pdfbox.filter
Class LZWFilter
- java.lang.Object
-
- org.apache.pdfbox.filter.Filter
-
- org.apache.pdfbox.filter.LZWFilter
-
public class LZWFilter extends Filter
This is the filter used for the LZWDecode filter.
-
-
Field Summary
Fields Modifier and Type Field Description static long
CLEAR_TABLE
The LZW clear table code.static long
EOD
The LZW end of data code.private static org.apache.commons.logging.Log
LOG
Log instance.-
Fields inherited from class org.apache.pdfbox.filter.Filter
SYSPROP_DEFLATELEVEL
-
-
Constructor Summary
Constructors Constructor Description LZWFilter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private int
calculateChunk(int tabSize, int earlyChange)
Calculate the appropriate chunk sizeprivate void
checkIndexBounds(java.util.List<byte[]> codeTable, long index, javax.imageio.stream.MemoryCacheImageInputStream in)
private java.util.List<byte[]>
createCodeTable()
Init the code table with 1 byte entries and the EOD and CLEAR_TABLE markers.DecodeResult
decode(java.io.InputStream encoded, java.io.OutputStream decoded, COSDictionary parameters, int index)
Decodes data, producing the original non-encoded data.private void
doLZWDecode(java.io.InputStream encoded, java.io.OutputStream decoded, int earlyChange)
protected void
encode(java.io.InputStream rawData, java.io.OutputStream encoded, COSDictionary parameters)
private int
findPatternCode(java.util.List<byte[]> codeTable, byte[] pattern)
Find the longest matching pattern in the code table.-
Methods inherited from class org.apache.pdfbox.filter.Filter
decode, encode, findImageReader, getCompressionLevel, getDecodeParams
-
-
-
-
Field Detail
-
LOG
private static final org.apache.commons.logging.Log LOG
Log instance.
-
CLEAR_TABLE
public static final long CLEAR_TABLE
The LZW clear table code.- See Also:
- Constant Field Values
-
EOD
public static final long EOD
The LZW end of data code.- See Also:
- Constant Field Values
-
-
Method Detail
-
decode
public DecodeResult decode(java.io.InputStream encoded, java.io.OutputStream decoded, COSDictionary parameters, int index) throws java.io.IOException
Decodes data, producing the original non-encoded data.- Specified by:
decode
in classFilter
- Parameters:
encoded
- the encoded byte streamdecoded
- the stream where decoded data will be writtenparameters
- the parameters used for decodingindex
- the index to the filter being decoded- Returns:
- repaired parameters dictionary, or the original parameters dictionary
- Throws:
java.io.IOException
- if the stream cannot be decoded
-
doLZWDecode
private void doLZWDecode(java.io.InputStream encoded, java.io.OutputStream decoded, int earlyChange) throws java.io.IOException
- Throws:
java.io.IOException
-
checkIndexBounds
private void checkIndexBounds(java.util.List<byte[]> codeTable, long index, javax.imageio.stream.MemoryCacheImageInputStream in) throws java.io.IOException
- Throws:
java.io.IOException
-
encode
protected void encode(java.io.InputStream rawData, java.io.OutputStream encoded, COSDictionary parameters) throws java.io.IOException
-
findPatternCode
private int findPatternCode(java.util.List<byte[]> codeTable, byte[] pattern)
Find the longest matching pattern in the code table.- Parameters:
codeTable
- The LZW code table.pattern
- The pattern to be searched for.- Returns:
- The index of the longest matching pattern or -1 if nothing is found.
-
createCodeTable
private java.util.List<byte[]> createCodeTable()
Init the code table with 1 byte entries and the EOD and CLEAR_TABLE markers.
-
calculateChunk
private int calculateChunk(int tabSize, int earlyChange)
Calculate the appropriate chunk size- Parameters:
tabSize
- the size of the code tableearlyChange
- 0 or 1 for early chunk increase- Returns:
- a value between 9 and 12
-
-