Package com.itextpdf.text.pdf.qrcode
Class Encoder
- java.lang.Object
-
- com.itextpdf.text.pdf.qrcode.Encoder
-
public final class Encoder extends java.lang.Object
- Since:
- 5.0.2
-
-
Field Summary
Fields Modifier and Type Field Description private static int[]
ALPHANUMERIC_TABLE
(package private) static java.lang.String
DEFAULT_BYTE_MODE_ENCODING
-
Constructor Summary
Constructors Modifier Constructor Description private
Encoder()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description (package private) static void
append8BitBytes(java.lang.String content, BitVector bits, java.lang.String encoding)
(package private) static void
appendAlphanumericBytes(java.lang.String content, BitVector bits)
(package private) static void
appendBytes(java.lang.String content, Mode mode, BitVector bits, java.lang.String encoding)
Append "bytes" in "mode" mode (encoding) into "bits".private static void
appendECI(CharacterSetECI eci, BitVector bits)
(package private) static void
appendKanjiBytes(java.lang.String content, BitVector bits)
(package private) static void
appendLengthInfo(int numLetters, int version, Mode mode, BitVector bits)
Append length info.(package private) static void
appendModeInfo(Mode mode, BitVector bits)
Append mode info.(package private) static void
appendNumericBytes(java.lang.String content, BitVector bits)
private static int
calculateMaskPenalty(ByteMatrix matrix)
private static int
chooseMaskPattern(BitVector bits, ErrorCorrectionLevel ecLevel, int version, ByteMatrix matrix)
static Mode
chooseMode(java.lang.String content)
static Mode
chooseMode(java.lang.String content, java.lang.String encoding)
Choose the best mode by examining the content.static void
encode(java.lang.String content, ErrorCorrectionLevel ecLevel, QRCode qrCode)
Encode "bytes" with the error correction level "ecLevel".static void
encode(java.lang.String content, ErrorCorrectionLevel ecLevel, java.util.Map<EncodeHintType,java.lang.Object> hints, QRCode qrCode)
(package private) static ByteArray
generateECBytes(ByteArray dataBytes, int numEcBytesInBlock)
(package private) static int
getAlphanumericCode(int code)
(package private) static void
getNumDataBytesAndNumECBytesForBlockID(int numTotalBytes, int numDataBytes, int numRSBlocks, int blockID, int[] numDataBytesInBlock, int[] numECBytesInBlock)
Get number of data bytes and number of error correction bytes for block id "blockID".private static void
initQRCode(int numInputBytes, ErrorCorrectionLevel ecLevel, Mode mode, QRCode qrCode)
Initialize "qrCode" according to "numInputBytes", "ecLevel", and "mode".(package private) static void
interleaveWithECBytes(BitVector bits, int numTotalBytes, int numDataBytes, int numRSBlocks, BitVector result)
Interleave "bits" with corresponding error correction bytes.private static boolean
isOnlyDoubleByteKanji(java.lang.String content)
(package private) static void
terminateBits(int numDataBytes, BitVector bits)
Terminate bits as described in 8.4.8 and 8.4.9 of JISX0510:2004 (p.24).
-
-
-
Field Detail
-
ALPHANUMERIC_TABLE
private static final int[] ALPHANUMERIC_TABLE
-
DEFAULT_BYTE_MODE_ENCODING
static final java.lang.String DEFAULT_BYTE_MODE_ENCODING
- See Also:
- Constant Field Values
-
-
Method Detail
-
calculateMaskPenalty
private static int calculateMaskPenalty(ByteMatrix matrix)
-
encode
public static void encode(java.lang.String content, ErrorCorrectionLevel ecLevel, QRCode qrCode) throws WriterException
Encode "bytes" with the error correction level "ecLevel". The encoding mode will be chosen internally by chooseMode(). On success, store the result in "qrCode". We recommend you to use QRCode.EC_LEVEL_L (the lowest level) for "getECLevel" since our primary use is to show QR code on desktop screens. We don't need very strong error correction for this purpose. Note that there is no way to encode bytes in MODE_KANJI. We might want to add EncodeWithMode() with which clients can specify the encoding mode. For now, we don't need the functionality.- Throws:
WriterException
-
encode
public static void encode(java.lang.String content, ErrorCorrectionLevel ecLevel, java.util.Map<EncodeHintType,java.lang.Object> hints, QRCode qrCode) throws WriterException
- Throws:
WriterException
-
getAlphanumericCode
static int getAlphanumericCode(int code)
- Returns:
- the code point of the table used in alphanumeric mode or -1 if there is no corresponding code in the table.
-
chooseMode
public static Mode chooseMode(java.lang.String content)
-
chooseMode
public static Mode chooseMode(java.lang.String content, java.lang.String encoding)
Choose the best mode by examining the content. Note that 'encoding' is used as a hint; if it is Shift_JIS, and the input is only double-byte Kanji, then we returnMode.KANJI
.
-
isOnlyDoubleByteKanji
private static boolean isOnlyDoubleByteKanji(java.lang.String content)
-
chooseMaskPattern
private static int chooseMaskPattern(BitVector bits, ErrorCorrectionLevel ecLevel, int version, ByteMatrix matrix) throws WriterException
- Throws:
WriterException
-
initQRCode
private static void initQRCode(int numInputBytes, ErrorCorrectionLevel ecLevel, Mode mode, QRCode qrCode) throws WriterException
Initialize "qrCode" according to "numInputBytes", "ecLevel", and "mode". On success, modify "qrCode".- Throws:
WriterException
-
terminateBits
static void terminateBits(int numDataBytes, BitVector bits) throws WriterException
Terminate bits as described in 8.4.8 and 8.4.9 of JISX0510:2004 (p.24).- Throws:
WriterException
-
getNumDataBytesAndNumECBytesForBlockID
static void getNumDataBytesAndNumECBytesForBlockID(int numTotalBytes, int numDataBytes, int numRSBlocks, int blockID, int[] numDataBytesInBlock, int[] numECBytesInBlock) throws WriterException
Get number of data bytes and number of error correction bytes for block id "blockID". Store the result in "numDataBytesInBlock", and "numECBytesInBlock". See table 12 in 8.5.1 of JISX0510:2004 (p.30)- Throws:
WriterException
-
interleaveWithECBytes
static void interleaveWithECBytes(BitVector bits, int numTotalBytes, int numDataBytes, int numRSBlocks, BitVector result) throws WriterException
Interleave "bits" with corresponding error correction bytes. On success, store the result in "result". The interleave rule is complicated. See 8.6 of JISX0510:2004 (p.37) for details.- Throws:
WriterException
-
appendModeInfo
static void appendModeInfo(Mode mode, BitVector bits)
Append mode info. On success, store the result in "bits".
-
appendLengthInfo
static void appendLengthInfo(int numLetters, int version, Mode mode, BitVector bits) throws WriterException
Append length info. On success, store the result in "bits".- Throws:
WriterException
-
appendBytes
static void appendBytes(java.lang.String content, Mode mode, BitVector bits, java.lang.String encoding) throws WriterException
Append "bytes" in "mode" mode (encoding) into "bits". On success, store the result in "bits".- Throws:
WriterException
-
appendNumericBytes
static void appendNumericBytes(java.lang.String content, BitVector bits)
-
appendAlphanumericBytes
static void appendAlphanumericBytes(java.lang.String content, BitVector bits) throws WriterException
- Throws:
WriterException
-
append8BitBytes
static void append8BitBytes(java.lang.String content, BitVector bits, java.lang.String encoding) throws WriterException
- Throws:
WriterException
-
appendKanjiBytes
static void appendKanjiBytes(java.lang.String content, BitVector bits) throws WriterException
- Throws:
WriterException
-
appendECI
private static void appendECI(CharacterSetECI eci, BitVector bits)
-
-