Esempio n. 1
0
        /// <summary>Split PDF string into array of single character PDF strings.</summary>
        /// <param name="string">PDF string to be splitted.</param>
        /// <returns>splitted PDF string.</returns>
        private PdfString[] SplitString(PdfString @string)
        {
            IList <PdfString> strings     = new List <PdfString>();
            String            stringValue = @string.GetValue();

            for (int i = 0; i < stringValue.Length; i++)
            {
                PdfString newString = new PdfString(stringValue.JSubstring(i, i + 1), @string.GetEncoding());
                String    text      = gs.GetFont().Decode(newString);
                if (text.Length == 0 && i < stringValue.Length - 1)
                {
                    newString = new PdfString(stringValue.JSubstring(i, i + 2), @string.GetEncoding());
                    i++;
                }
                strings.Add(newString);
            }
            return(strings.ToArray(new PdfString[strings.Count]));
        }
        /// <summary>Split PDF string into array of single character PDF strings.</summary>
        /// <param name="string">PDF string to be split.</param>
        /// <returns>split PDF string.</returns>
        private PdfString[] SplitString(PdfString @string)
        {
            CheckGraphicsState();
            PdfFont font = gs.GetFont();

            if (font is PdfType0Font)
            {
                // Number of bytes forming one glyph can be arbitrary from [1; 4] range
                IList <PdfString> strings   = new List <PdfString>();
                GlyphLine         glyphLine = gs.GetFont().DecodeIntoGlyphLine(@string);
                for (int i = glyphLine.start; i < glyphLine.end; i++)
                {
                    strings.Add(new PdfString(gs.GetFont().ConvertToBytes(glyphLine.Get(i))));
                }
                return(strings.ToArray(new PdfString[strings.Count]));
            }
            else
            {
                // One byte corresponds to one character
                PdfString[] strings = new PdfString[@string.GetValue().Length];
                for (int i = 0; i < @string.GetValue().Length; i++)
                {
                    strings[i] = new PdfString(@string.GetValue().JSubstring(i, i + 1), @string.GetEncoding());
                }
                return(strings);
            }
        }