public class CMapParser
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
CMapParser.LiteralName
Internal class.
|
private static class |
CMapParser.Operator
Internal class.
|
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
MARK_END_OF_ARRAY |
private static java.lang.String |
MARK_END_OF_DICTIONARY |
private byte[] |
tokenParserByteBuffer |
Constructor and Description |
---|
CMapParser()
Creates a new instance of CMapParser.
|
Modifier and Type | Method and Description |
---|---|
private void |
addMappingFrombfrange(CMap cmap,
byte[] startCode,
int values,
byte[] tokenBytes) |
private void |
addMappingFrombfrange(CMap cmap,
byte[] startCode,
java.util.List<byte[]> tokenBytesList) |
private int |
createIntFromBytes(byte[] bytes) |
private java.lang.String |
createStringFromBytes(byte[] bytes) |
protected java.io.InputStream |
getExternalCMap(java.lang.String name)
Returns an input stream containing the given "use" CMap.
|
private void |
increment(byte[] data) |
private void |
increment(byte[] data,
int position) |
private boolean |
isDelimiter(int aByte)
Is this a standard PDF delimiter character?
|
private boolean |
isWhitespaceOrEOF(int aByte) |
CMap |
parse(java.io.File file)
Parse a CMAP file on the file system.
|
CMap |
parse(java.io.InputStream input)
This will parse the stream and create a cmap object.
|
private void |
parseBeginbfchar(java.lang.Number cosCount,
java.io.PushbackInputStream cmapStream,
CMap result) |
private void |
parseBeginbfrange(java.lang.Number cosCount,
java.io.PushbackInputStream cmapStream,
CMap result) |
private void |
parseBegincidchar(java.lang.Number cosCount,
java.io.PushbackInputStream cmapStream,
CMap result) |
private void |
parseBegincidrange(int numberOfLines,
java.io.PushbackInputStream cmapStream,
CMap result) |
private void |
parseBegincodespacerange(java.lang.Number cosCount,
java.io.PushbackInputStream cmapStream,
CMap result) |
private void |
parseLiteralName(CMapParser.LiteralName literal,
java.io.PushbackInputStream cmapStream,
CMap result) |
private java.lang.Object |
parseNextToken(java.io.PushbackInputStream is) |
CMap |
parsePredefined(java.lang.String name)
Parses a predefined CMap.
|
private void |
parseUsecmap(CMapParser.LiteralName useCmapName,
CMap result) |
private void |
readUntilEndOfLine(java.io.InputStream is,
java.lang.StringBuilder buf) |
private static final java.lang.String MARK_END_OF_DICTIONARY
private static final java.lang.String MARK_END_OF_ARRAY
private final byte[] tokenParserByteBuffer
public CMap parse(java.io.File file) throws java.io.IOException
file
- The file to parse.java.io.IOException
- If there is an issue while parsing the CMAP.public CMap parsePredefined(java.lang.String name) throws java.io.IOException
name
- CMap name.java.io.IOException
- If the CMap could not be parsed.public CMap parse(java.io.InputStream input) throws java.io.IOException
input
- The CMAP stream to parse.java.io.IOException
- If there is an error parsing the stream.private void parseUsecmap(CMapParser.LiteralName useCmapName, CMap result) throws java.io.IOException
java.io.IOException
private void parseLiteralName(CMapParser.LiteralName literal, java.io.PushbackInputStream cmapStream, CMap result) throws java.io.IOException
java.io.IOException
private void parseBegincodespacerange(java.lang.Number cosCount, java.io.PushbackInputStream cmapStream, CMap result) throws java.io.IOException
java.io.IOException
private void parseBeginbfchar(java.lang.Number cosCount, java.io.PushbackInputStream cmapStream, CMap result) throws java.io.IOException
java.io.IOException
private void parseBegincidrange(int numberOfLines, java.io.PushbackInputStream cmapStream, CMap result) throws java.io.IOException
java.io.IOException
private void parseBegincidchar(java.lang.Number cosCount, java.io.PushbackInputStream cmapStream, CMap result) throws java.io.IOException
java.io.IOException
private void parseBeginbfrange(java.lang.Number cosCount, java.io.PushbackInputStream cmapStream, CMap result) throws java.io.IOException
java.io.IOException
private void addMappingFrombfrange(CMap cmap, byte[] startCode, java.util.List<byte[]> tokenBytesList)
private void addMappingFrombfrange(CMap cmap, byte[] startCode, int values, byte[] tokenBytes)
protected java.io.InputStream getExternalCMap(java.lang.String name) throws java.io.IOException
name
- Name of the given "use" CMap resource.java.io.IOException
- if the CMap resource doesn't exist or if there is an error opening its
stream.private java.lang.Object parseNextToken(java.io.PushbackInputStream is) throws java.io.IOException
java.io.IOException
private void readUntilEndOfLine(java.io.InputStream is, java.lang.StringBuilder buf) throws java.io.IOException
java.io.IOException
private boolean isWhitespaceOrEOF(int aByte)
private boolean isDelimiter(int aByte)
private void increment(byte[] data)
private void increment(byte[] data, int position)
private int createIntFromBytes(byte[] bytes)
private java.lang.String createStringFromBytes(byte[] bytes)