Class CMapParser


  • public class CMapParser
    extends java.lang.Object
    Parses a CMap stream.
    • Field Detail

      • MARK_END_OF_DICTIONARY

        private static final java.lang.String MARK_END_OF_DICTIONARY
        See Also:
        Constant Field Values
      • MARK_END_OF_ARRAY

        private static final java.lang.String MARK_END_OF_ARRAY
        See Also:
        Constant Field Values
      • tokenParserByteBuffer

        private final byte[] tokenParserByteBuffer
    • Constructor Detail

      • CMapParser

        public CMapParser()
        Creates a new instance of CMapParser.
    • Method Detail

      • parse

        public CMap parse​(java.io.File file)
                   throws java.io.IOException
        Parse a CMAP file on the file system.
        Parameters:
        file - The file to parse.
        Returns:
        A parsed CMAP file.
        Throws:
        java.io.IOException - If there is an issue while parsing the CMAP.
      • parsePredefined

        public CMap parsePredefined​(java.lang.String name)
                             throws java.io.IOException
        Parses a predefined CMap.
        Parameters:
        name - CMap name.
        Returns:
        The parsed predefined CMap as a java object, never null.
        Throws:
        java.io.IOException - If the CMap could not be parsed.
      • parse

        public CMap parse​(java.io.InputStream input)
                   throws java.io.IOException
        This will parse the stream and create a cmap object.
        Parameters:
        input - The CMAP stream to parse.
        Returns:
        The parsed stream as a java object, never null.
        Throws:
        java.io.IOException - If there is an error parsing the stream.
      • parseUsecmap

        private void parseUsecmap​(CMapParser.LiteralName useCmapName,
                                  CMap result)
                           throws java.io.IOException
        Throws:
        java.io.IOException
      • parseLiteralName

        private void parseLiteralName​(CMapParser.LiteralName literal,
                                      java.io.PushbackInputStream cmapStream,
                                      CMap result)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • parseBegincodespacerange

        private void parseBegincodespacerange​(java.lang.Number cosCount,
                                              java.io.PushbackInputStream cmapStream,
                                              CMap result)
                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • parseBeginbfchar

        private void parseBeginbfchar​(java.lang.Number cosCount,
                                      java.io.PushbackInputStream cmapStream,
                                      CMap result)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • parseBegincidrange

        private void parseBegincidrange​(int numberOfLines,
                                        java.io.PushbackInputStream cmapStream,
                                        CMap result)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • parseBegincidchar

        private void parseBegincidchar​(java.lang.Number cosCount,
                                       java.io.PushbackInputStream cmapStream,
                                       CMap result)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • parseBeginbfrange

        private void parseBeginbfrange​(java.lang.Number cosCount,
                                       java.io.PushbackInputStream cmapStream,
                                       CMap result)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • addMappingFrombfrange

        private void addMappingFrombfrange​(CMap cmap,
                                           byte[] startCode,
                                           java.util.List<byte[]> tokenBytesList)
      • addMappingFrombfrange

        private void addMappingFrombfrange​(CMap cmap,
                                           byte[] startCode,
                                           int values,
                                           byte[] tokenBytes)
      • getExternalCMap

        protected java.io.InputStream getExternalCMap​(java.lang.String name)
                                               throws java.io.IOException
        Returns an input stream containing the given "use" CMap.
        Parameters:
        name - Name of the given "use" CMap resource.
        Throws:
        java.io.IOException - if the CMap resource doesn't exist or if there is an error opening its stream.
      • parseNextToken

        private java.lang.Object parseNextToken​(java.io.PushbackInputStream is)
                                         throws java.io.IOException
        Throws:
        java.io.IOException
      • readUntilEndOfLine

        private void readUntilEndOfLine​(java.io.InputStream is,
                                        java.lang.StringBuilder buf)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • isWhitespaceOrEOF

        private boolean isWhitespaceOrEOF​(int aByte)
      • isDelimiter

        private boolean isDelimiter​(int aByte)
        Is this a standard PDF delimiter character?
      • increment

        private void increment​(byte[] data)
      • increment

        private void increment​(byte[] data,
                               int position)
      • createIntFromBytes

        private int createIntFromBytes​(byte[] bytes)
      • createStringFromBytes

        private java.lang.String createStringFromBytes​(byte[] bytes)