Class PDF417HighLevelEncoder

java.lang.Object
com.google.zxing.pdf417.encoder.PDF417HighLevelEncoder

final class PDF417HighLevelEncoder extends Object
PDF417 high-level encoder following the algorithm described in ISO/IEC 15438:2001(E) in annex P.
  • Field Details

    • TEXT_COMPACTION

      private static final int TEXT_COMPACTION
      code for Text compaction
      See Also:
    • BYTE_COMPACTION

      private static final int BYTE_COMPACTION
      code for Byte compaction
      See Also:
    • NUMERIC_COMPACTION

      private static final int NUMERIC_COMPACTION
      code for Numeric compaction
      See Also:
    • SUBMODE_ALPHA

      private static final int SUBMODE_ALPHA
      Text compaction submode Alpha
      See Also:
    • SUBMODE_LOWER

      private static final int SUBMODE_LOWER
      Text compaction submode Lower
      See Also:
    • SUBMODE_MIXED

      private static final int SUBMODE_MIXED
      Text compaction submode Mixed
      See Also:
    • SUBMODE_PUNCTUATION

      private static final int SUBMODE_PUNCTUATION
      Text compaction submode Punctuation
      See Also:
    • LATCH_TO_TEXT

      private static final int LATCH_TO_TEXT
      mode latch to Text Compaction mode
      See Also:
    • LATCH_TO_BYTE_PADDED

      private static final int LATCH_TO_BYTE_PADDED
      mode latch to Byte Compaction mode (number of characters NOT a multiple of 6)
      See Also:
    • LATCH_TO_NUMERIC

      private static final int LATCH_TO_NUMERIC
      mode latch to Numeric Compaction mode
      See Also:
    • SHIFT_TO_BYTE

      private static final int SHIFT_TO_BYTE
      mode shift to Byte Compaction mode
      See Also:
    • LATCH_TO_BYTE

      private static final int LATCH_TO_BYTE
      mode latch to Byte Compaction mode (number of characters a multiple of 6)
      See Also:
    • ECI_USER_DEFINED

      private static final int ECI_USER_DEFINED
      identifier for a user defined Extended Channel Interpretation (ECI)
      See Also:
    • ECI_GENERAL_PURPOSE

      private static final int ECI_GENERAL_PURPOSE
      identifier for a general purpose ECO format
      See Also:
    • ECI_CHARSET

      private static final int ECI_CHARSET
      identifier for an ECI of a character set of code page
      See Also:
    • TEXT_MIXED_RAW

      private static final byte[] TEXT_MIXED_RAW
      Raw code table for text compaction Mixed sub-mode
    • TEXT_PUNCTUATION_RAW

      private static final byte[] TEXT_PUNCTUATION_RAW
      Raw code table for text compaction: Punctuation sub-mode
    • MIXED

      private static final byte[] MIXED
    • PUNCTUATION

      private static final byte[] PUNCTUATION
    • DEFAULT_ENCODING

      private static final Charset DEFAULT_ENCODING
  • Constructor Details

    • PDF417HighLevelEncoder

      private PDF417HighLevelEncoder()
  • Method Details

    • encodeHighLevel

      static String encodeHighLevel(String msg, Compaction compaction, Charset encoding, boolean autoECI) throws WriterException
      Performs high-level encoding of a PDF417 message using the algorithm described in annex P of ISO/IEC 15438:2001(E). If byte compaction has been selected, then only byte compaction is used.
      Parameters:
      msg - the message
      compaction - compaction mode to use
      encoding - character encoding used to encode in default or byte compaction or null for default / not applicable
      autoECI - encode input minimally using multiple ECIs if needed If autoECI encoding is specified and additionally encoding is specified, then the encoder will use the specified Charset for any character that can be encoded by it, regardless if a different encoding would lead to a more compact encoding. When no encoding is specified then charsets will be chosen so that the byte representation is minimal.
      Returns:
      the encoded message (the char values range from 0 to 928)
      Throws:
      WriterException
    • encodeText

      private static int encodeText(ECIInput input, int startpos, int count, StringBuilder sb, int initialSubmode) throws WriterException
      Encode parts of the message using Text Compaction as described in ISO/IEC 15438:2001(E), chapter 4.4.2.
      Parameters:
      input - the input
      startpos - the start position within the message
      count - the number of characters to encode
      sb - receives the encoded codewords
      initialSubmode - should normally be SUBMODE_ALPHA
      Returns:
      the text submode in which this method ends
      Throws:
      WriterException
    • encodeMultiECIBinary

      private static void encodeMultiECIBinary(ECIInput input, int startpos, int count, int startmode, StringBuilder sb) throws WriterException
      Encode all of the message using Byte Compaction as described in ISO/IEC 15438:2001(E)
      Parameters:
      input - the input
      startpos - the start position within the message
      count - the number of bytes to encode
      startmode - the mode from which this method starts
      sb - receives the encoded codewords
      Throws:
      WriterException
    • subBytes

      static byte[] subBytes(ECIInput input, int start, int end)
    • encodeBinary

      private static void encodeBinary(byte[] bytes, int startpos, int count, int startmode, StringBuilder sb)
      Encode parts of the message using Byte Compaction as described in ISO/IEC 15438:2001(E), chapter 4.4.3. The Unicode characters will be converted to binary using the cp437 codepage.
      Parameters:
      bytes - the message converted to a byte array
      startpos - the start position within the message
      count - the number of bytes to encode
      startmode - the mode from which this method starts
      sb - receives the encoded codewords
    • encodeNumeric

      private static void encodeNumeric(ECIInput input, int startpos, int count, StringBuilder sb)
    • isDigit

      private static boolean isDigit(char ch)
    • isAlphaUpper

      private static boolean isAlphaUpper(char ch)
    • isAlphaLower

      private static boolean isAlphaLower(char ch)
    • isMixed

      private static boolean isMixed(char ch)
    • isPunctuation

      private static boolean isPunctuation(char ch)
    • isText

      private static boolean isText(char ch)
    • determineConsecutiveDigitCount

      private static int determineConsecutiveDigitCount(ECIInput input, int startpos)
      Determines the number of consecutive characters that are encodable using numeric compaction.
      Parameters:
      input - the input
      startpos - the start position within the input
      Returns:
      the requested character count
    • determineConsecutiveTextCount

      private static int determineConsecutiveTextCount(ECIInput input, int startpos)
      Determines the number of consecutive characters that are encodable using text compaction.
      Parameters:
      input - the input
      startpos - the start position within the input
      Returns:
      the requested character count
    • determineConsecutiveBinaryCount

      private static int determineConsecutiveBinaryCount(ECIInput input, int startpos, Charset encoding) throws WriterException
      Determines the number of consecutive characters that are encodable using binary compaction.
      Parameters:
      input - the input
      startpos - the start position within the message
      encoding - the charset used to convert the message to a byte array
      Returns:
      the requested character count
      Throws:
      WriterException
    • encodingECI

      private static void encodingECI(int eci, StringBuilder sb) throws WriterException
      Throws:
      WriterException