Exemplo n.º 1
0
        /**
         * Converts a <CODE>string</CODE> to a </CODE>byte</CODE> array according
         * to the font's encoding.
         * @param text the <CODE>string</CODE> to be converted
         * @return an array of <CODE>byte</CODE> representing the conversion according to the font's encoding
         */
        public static byte[] ConvertToBytes(string text, string encoding)
        {
            if (text == null)
            {
                return(new byte[0]);
            }
            if (encoding == null || encoding.Length == 0)
            {
                int    len = text.Length;
                byte[] b   = new byte[len];
                for (int k = 0; k < len; ++k)
                {
                    b[k] = (byte)text[k];
                }
                return(b);
            }
            IExtraEncoding extra = (IExtraEncoding)extraEncodings[encoding.ToLower(System.Globalization.CultureInfo.InvariantCulture)];

            if (extra != null)
            {
                byte[] b = extra.CharToByte(text, encoding);
                if (b != null)
                {
                    return(b);
                }
            }
            IntHashtable hash = null;

            if (encoding.Equals(BaseFont.CP1252))
            {
                hash = winansi;
            }
            else if (encoding.Equals(PdfObject.TEXT_PDFDOCENCODING))
            {
                hash = pdfEncoding;
            }
            if (hash != null)
            {
                char[] cc  = text.ToCharArray();
                int    len = cc.Length;
                int    ptr = 0;
                byte[] b   = new byte[len];
                int    c   = 0;
                for (int k = 0; k < len; ++k)
                {
                    char char1 = cc[k];
                    if (char1 < 128 || (char1 > 160 && char1 <= 255))
                    {
                        c = char1;
                    }
                    else
                    {
                        c = hash[char1];
                    }
                    if (c != 0)
                    {
                        b[ptr++] = (byte)c;
                    }
                }
                if (ptr == len)
                {
                    return(b);
                }
                byte[] b2 = new byte[ptr];
                Array.Copy(b, 0, b2, 0, ptr);
                return(b2);
            }
            Encoding encw = IanaEncodings.GetEncodingEncoding(encoding);

            byte[] preamble = encw.GetPreamble();
            if (preamble.Length == 0)
            {
                return(encw.GetBytes(text));
            }
            byte[] encoded = encw.GetBytes(text);
            byte[] total   = new byte[encoded.Length + preamble.Length];
            Array.Copy(preamble, 0, total, 0, preamble.Length);
            Array.Copy(encoded, 0, total, preamble.Length, encoded.Length);
            return(total);
        }
Exemplo n.º 2
0
        /** Converts a <CODE>String</CODE> to a </CODE>byte</CODE> array according
         * to the font's encoding.
         * @return an array of <CODE>byte</CODE> representing the conversion according to the font's encoding
         * @param encoding the encoding
         * @param char1 the <CODE>char</CODE> to be converted
         */
        public static byte[] ConvertToBytes(char char1, String encoding)
        {
            if (encoding == null || encoding.Length == 0)
            {
                return new byte[] { (byte)char1 }
            }
            ;
            IExtraEncoding extra = (IExtraEncoding)extraEncodings[encoding.ToLower(System.Globalization.CultureInfo.InvariantCulture)];

            if (extra != null)
            {
                byte[] b = extra.CharToByte(char1, encoding);

                if (b != null)
                {
                    return(b);
                }
            }
            IntHashtable hash = null;

            if (encoding.Equals(BaseFont.WINANSI))
            {
                hash = winansi;
            }
            else if (encoding.Equals(PdfObject.TEXT_PDFDOCENCODING))
            {
                hash = pdfEncoding;
            }
            if (hash != null)
            {
                int c = 0;
                if (char1 < 128 || (char1 > 160 && char1 <= 255))
                {
                    c = char1;
                }
                else
                {
                    c = hash[char1];
                }
                if (c != 0)
                {
                    return new byte[] { (byte)c }
                }
                ;
                else
                {
                    return(new byte[0]);
                }
            }
            Encoding encw = IanaEncodings.GetEncodingEncoding(encoding);

            byte[] preamble = encw.GetPreamble();
            char[] text     = new char[] { char1 };
            if (preamble.Length == 0)
            {
                return(encw.GetBytes(text));
            }
            byte[] encoded = encw.GetBytes(text);
            byte[] total   = new byte[encoded.Length + preamble.Length];
            Array.Copy(preamble, 0, total, 0, preamble.Length);
            Array.Copy(encoded, 0, total, preamble.Length, encoded.Length);
            return(total);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Converts a
        /// <c>String</c>
        /// to a
        /// <c>byte</c>
        /// array according
        /// to the font's encoding.
        /// </summary>
        /// <param name="encoding">the encoding</param>
        /// <param name="text">
        /// the
        /// <c>String</c>
        /// to be converted
        /// </param>
        /// <returns>
        /// an array of
        /// <c>byte</c>
        /// representing the conversion according to the font's encoding
        /// </returns>
        public static byte[] ConvertToBytes(String text, String encoding)
        {
            if (text == null)
            {
                return(new byte[0]);
            }
            if (encoding == null || encoding.Length == 0)
            {
                int    len = text.Length;
                byte[] b   = new byte[len];
                for (int k = 0; k < len; ++k)
                {
                    b[k] = (byte)text[k];
                }
                return(b);
            }
            IExtraEncoding extra = extraEncodings.Get(encoding.ToLower(System.Globalization.CultureInfo.InvariantCulture
                                                                       ));

            if (extra != null)
            {
                byte[] b = extra.CharToByte(text, encoding);
                if (b != null)
                {
                    return(b);
                }
            }
            IntHashtable hash = null;

            if (encoding.Equals(WINANSI))
            {
                hash = winansi;
            }
            else
            {
                if (encoding.Equals(PDF_DOC_ENCODING))
                {
                    hash = pdfEncoding;
                }
            }
            if (hash != null)
            {
                char[] cc  = text.ToCharArray();
                int    len = cc.Length;
                int    ptr = 0;
                byte[] b   = new byte[len];
                int    c;
                for (int k = 0; k < len; ++k)
                {
                    char ch = cc[k];
                    if (ch < 128 || ch > 160 && ch <= 255)
                    {
                        c = ch;
                    }
                    else
                    {
                        c = hash.Get((int)ch);
                    }
                    if (c != 0)
                    {
                        b[ptr++] = (byte)c;
                    }
                }
                if (ptr == len)
                {
                    return(b);
                }
                byte[] b2 = new byte[ptr];
                System.Array.Copy(b, 0, b2, 0, ptr);
                return(b2);
            }
            try {
                return(EncodingUtil.ConvertToBytes(text.ToCharArray(), encoding));
            }
            catch (System.IO.IOException e) {
                throw new iText.IO.IOException(iText.IO.IOException.PdfEncodings, e);
            }
        }