Package com.lowagie.text.pdf
Class PdfEncodings
- java.lang.Object
-
- com.lowagie.text.pdf.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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
PdfEncodings.Cp437Conversion
private static class
PdfEncodings.SymbolConversion
private static class
PdfEncodings.SymbolTTConversion
private static class
PdfEncodings.WingdingsConversion
-
Field Summary
Fields Modifier and Type Field Description protected static int
CIDCHAR
protected static int
CIDNONE
protected static int
CIDRANGE
(package private) static java.util.concurrent.ConcurrentHashMap<java.lang.String,char[][]>
cmaps
static byte[][]
CRLF_CID_NEWLINE
Assumes that '\\n' and '\\r\\n' are the newline sequences.(package private) static java.util.concurrent.ConcurrentHashMap<java.lang.String,ExtraEncoding>
extraEncodings
(package private) static IntHashtable
pdfEncoding
(package private) static char[]
pdfEncodingByteToChar
(package private) static IntHashtable
winansi
(package private) static char[]
winansiByteToChar
-
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 abyte
array encoded asname
to a CID string.static java.lang.String
convertCmap(java.lang.String name, byte[] seq, int start, int length)
Converts abyte
array encoded asname
to a CID string.static byte[]
convertToBytes(char char1, java.lang.String encoding)
Converts aString
to abyte
array according to the font's encoding.static byte[]
convertToBytes(java.lang.String text, java.lang.String encoding)
Converts aString
to abyte
array according to the font's encoding.static java.lang.String
convertToString(byte[] bytes, java.lang.String encoding)
Converts abyte
array to aString
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<char[]> planes)
(package private) static void
encodeStream(java.io.InputStream in, java.util.ArrayList<char[]> planes)
static boolean
isPdfDocEncoding(java.lang.String text)
Checks istext
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<char[]> planes)
-
-
-
Field Detail
-
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().
-
CIDNONE
protected static final int CIDNONE
- See Also:
- Constant Field Values
-
CIDRANGE
protected static final int CIDRANGE
- See Also:
- Constant Field Values
-
CIDCHAR
protected static final int CIDCHAR
- See Also:
- Constant Field Values
-
winansiByteToChar
static final char[] winansiByteToChar
-
pdfEncodingByteToChar
static final char[] pdfEncodingByteToChar
-
winansi
static final IntHashtable winansi
-
pdfEncoding
static final IntHashtable pdfEncoding
-
cmaps
static final java.util.concurrent.ConcurrentHashMap<java.lang.String,char[][]> cmaps
-
extraEncodings
static java.util.concurrent.ConcurrentHashMap<java.lang.String,ExtraEncoding> extraEncodings
-
-
Method Detail
-
convertToBytes
public static final byte[] convertToBytes(java.lang.String text, java.lang.String encoding)
Converts aString
to abyte
array according to the font's encoding.- Parameters:
encoding
- the encodingtext
- theString
to be converted- Returns:
- an array of
byte
representing the conversion according to the font's encoding
-
convertToBytes
public static final byte[] convertToBytes(char char1, java.lang.String encoding)
Converts aString
to abyte
array according to the font's encoding.- Parameters:
encoding
- the encodingchar1
- thechar
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 abyte
array to aString
according to the some encoding.- Parameters:
bytes
- the bytes to convertencoding
- the encoding- Returns:
- the converted
String
-
isPdfDocEncoding
public static boolean isPdfDocEncoding(java.lang.String text)
Checks istext
only has PdfDocEncoding characters.- Parameters:
text
- theString
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. Ifname
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 namenewline
- the sequences to be replaced by a newline in the resulting CID. SeeCRLF_CID_NEWLINE
-
convertCmap
public static java.lang.String convertCmap(java.lang.String name, byte[] seq)
Converts abyte
array encoded asname
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 nameseq
- thebyte
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 abyte
array encoded asname
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 namestart
- the start offset in the datalength
- the number of bytes to convertseq
- thebyte
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<char[]> planes) throws java.io.IOException
- Throws:
java.io.IOException
-
encodeStream
static void encodeStream(java.io.InputStream in, java.util.ArrayList<char[]> 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<char[]> 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 insensitiveenc
- the conversion class
-
-