Class PdfEncodings


  • public class PdfEncodings
    extends java.lang.Object
    Supports fast encodings for winansi and PDFDocEncoding. Supports conversions from CJK encodings to CID. Supports custom encodings.
    • Constructor Summary

      Constructors 
      Constructor Description
      PdfEncodings()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void addExtraEncoding​(java.lang.String name, ExtraEncoding enc)
      Adds an extra encoding.
      (package private) static void breakLong​(long n, int size, byte[] seqs)  
      static void clearCmap​(java.lang.String name)
      Clears the CJK cmaps from the cache.
      static java.lang.String convertCmap​(java.lang.String name, byte[] seq)
      Converts a byte array encoded as name to a CID string.
      static java.lang.String convertCmap​(java.lang.String name, byte[] seq, int start, int length)
      Converts a byte array encoded as name to a CID string.
      static byte[] convertToBytes​(java.lang.String text, java.lang.String encoding)
      Converts a String to a byte array according to the font's encoding.
      static java.lang.String convertToString​(byte[] bytes, java.lang.String encoding)
      Converts a byte array to a String according to the some encoding.
      (package private) static java.lang.String decodeSequence​(byte[] seq, int start, int length, char[][] planes)  
      (package private) static void encodeSequence​(int size, byte[] seqs, char cid, java.util.ArrayList planes)  
      (package private) static void encodeStream​(java.io.InputStream in, java.util.ArrayList planes)  
      static boolean isPdfDocEncoding​(java.lang.String text)
      Checks is text only has PdfDocEncoding characters.
      static void loadCmap​(java.lang.String name, byte[][] newline)
      Loads a CJK cmap to the cache with the option of associating sequences to the newline.
      (package private) static char[][] readCmap​(java.lang.String name, byte[][] newline)  
      (package private) static void readCmap​(java.lang.String name, java.util.ArrayList planes)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • winansiByteToChar

        static final char[] winansiByteToChar
      • pdfEncodingByteToChar

        static final char[] pdfEncodingByteToChar
      • extraEncodings

        static final java.util.HashMap extraEncodings
      • cmaps

        static final java.util.HashMap cmaps
      • CRLF_CID_NEWLINE

        public static final byte[][] CRLF_CID_NEWLINE
        Assumes that '\\n' and '\\r\\n' are the newline sequences. It may not work for all CJK encodings. To be used with loadCmap().
    • Constructor Detail

      • PdfEncodings

        public PdfEncodings()
    • Method Detail

      • convertToBytes

        public static final byte[] convertToBytes​(java.lang.String text,
                                                  java.lang.String encoding)
        Converts a String to a byte array according to the font's encoding.
        Parameters:
        encoding - the encoding fo the return byte array
        text - the String to be converted
        Returns:
        an array of byte representing the conversion according to the font's encoding
      • convertToString

        public static final java.lang.String convertToString​(byte[] bytes,
                                                             java.lang.String encoding)
        Converts a byte array to a String according to the some encoding.
        Parameters:
        bytes - the bytes to convert
        encoding - the encoding of input bytes
        Returns:
        the converted String
      • isPdfDocEncoding

        public static boolean isPdfDocEncoding​(java.lang.String text)
        Checks is text only has PdfDocEncoding characters.
        Parameters:
        text - the String to test
        Returns:
        true if only PdfDocEncoding characters are present
      • clearCmap

        public static void clearCmap​(java.lang.String name)
        Clears the CJK cmaps from the cache. If name is the empty string then all the cache is cleared. Calling this method has no consequences other than the need to reload the cmap if needed.
        Parameters:
        name - the name of the cmap to clear or all the cmaps if the empty string
      • loadCmap

        public static void loadCmap​(java.lang.String name,
                                    byte[][] newline)
        Loads a CJK cmap to the cache with the option of associating sequences to the newline.
        Parameters:
        name - the CJK cmap name
        newline - the sequences to be replaced bi a newline in the resulting CID. See CRLF_CID_NEWLINE
      • convertCmap

        public static java.lang.String convertCmap​(java.lang.String name,
                                                   byte[] seq)
        Converts a byte array encoded as name to a CID string. This is needed to reach some CJK characters that don't exist in 16 bit Unicode.

        The font to use this result must use the encoding "Identity-H" or "Identity-V".

        See ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/.
        Parameters:
        name - the CJK encoding name
        seq - the byte array to be decoded
        Returns:
        the CID string
      • convertCmap

        public static java.lang.String convertCmap​(java.lang.String name,
                                                   byte[] seq,
                                                   int start,
                                                   int length)
        Converts a byte array encoded as name to a CID string. This is needed to reach some CJK characters that don't exist in 16 bit Unicode.

        The font to use this result must use the encoding "Identity-H" or "Identity-V".

        See ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/.
        Parameters:
        name - the CJK encoding name
        start - the start offset in the data
        length - the number of bytes to convert
        seq - the byte array to be decoded
        Returns:
        the CID string
      • decodeSequence

        static java.lang.String decodeSequence​(byte[] seq,
                                               int start,
                                               int length,
                                               char[][] planes)
      • readCmap

        static char[][] readCmap​(java.lang.String name,
                                 byte[][] newline)
                          throws java.io.IOException
        Throws:
        java.io.IOException
      • readCmap

        static void readCmap​(java.lang.String name,
                             java.util.ArrayList planes)
                      throws java.io.IOException
        Throws:
        java.io.IOException
      • encodeStream

        static void encodeStream​(java.io.InputStream in,
                                 java.util.ArrayList planes)
                          throws java.io.IOException
        Throws:
        java.io.IOException
      • breakLong

        static void breakLong​(long n,
                              int size,
                              byte[] seqs)
      • encodeSequence

        static void encodeSequence​(int size,
                                   byte[] seqs,
                                   char cid,
                                   java.util.ArrayList planes)
      • addExtraEncoding

        public static void addExtraEncoding​(java.lang.String name,
                                            ExtraEncoding enc)
        Adds an extra encoding.
        Parameters:
        name - the name of the encoding. The encoding recognition is case insensitive
        enc - the conversion class