示例#1
0
        public static PdfArrayDataType Parse(string s)
        {
            s = s.Trim();
            if (!s.StartsWith("[") || !s.EndsWith("]"))
            {
                throw new InvalidOperationException("{0} is not a valid array");
            }

            PdfArrayDataType pdfArrayDataType = new PdfArrayDataType();
            int i = 0;

            InternalParse(pdfArrayDataType, s, ref i);
            return(pdfArrayDataType);
        }
示例#2
0
        private static void InternalParse(PdfArrayDataType pdfArrayDataType, string s, ref int i)
        {
            i++;
            while (i < s.Length)
            {
                if (PdfStringDataType.IsStartChar(s, i))
                {
                    string item = PdfStringDataType.GetRawData(s, ref i);
                    pdfArrayDataType.StringElements.Add(item);
                    pdfArrayDataType.Elements.Add(item);
                }
                if (PdfHexStringDataType.IsStartChar(s, i))
                {
                    string item = PdfHexStringDataType.GetRawData(s, ref i);
                    pdfArrayDataType.StringElements.Add(item);
                    pdfArrayDataType.Elements.Add(item);
                }
                else if (PdfNumericDataType.IsStartChar(s, i))
                {
                    string item = PdfNumericDataType.GetRawData(s, ref i);
                    pdfArrayDataType.StringElements.Add(item);
                    pdfArrayDataType.Elements.Add(float.Parse(item, NumberFormatInfo.InvariantInfo));
                }
                else if (PdfArrayDataType.IsStartChar(s, i))
                {
                    string item = PdfArrayDataType.GetRawData(s, ref i);
                    pdfArrayDataType.StringElements.Add(item);

                    PdfArrayDataType innerPdfArrayDataType = new PdfArrayDataType();
                    InternalParse(innerPdfArrayDataType, s, ref i);
                    pdfArrayDataType.Elements.Add(innerPdfArrayDataType);
                }
                else if (s[i] == ']')
                {
                    return;
                }
                else if (s[i] == ' ')
                {
                    i++;
                }
                else
                {
                    throw new ArgumentException(string.Format("{0} is not an array", s));
                }
            }
        }