iTextSharp.text.pdf.SimpleBookmark.ShiftPageNumbers C# (CSharp) Метод

ShiftPageNumbers() публичный статический Метод

public static ShiftPageNumbers ( Object>.IList list, int pageShift, int pageRange ) : void
list Object>.IList
pageShift int
pageRange int
Результат void
        public static void ShiftPageNumbers(IList<Dictionary<String, Object>> list, int pageShift, int[] pageRange)
        {
            if (list == null)
                return;
            foreach (Dictionary<String, Object> map in list) {
                if (map.ContainsKey("Action") && "GoTo".Equals(map["Action"])) {
                    String page = null;
                    if (map.ContainsKey("Page"))
                        page = (String)map["Page"];
                    if (page != null) {
                        page = page.Trim();
                        int idx = page.IndexOf(' ');
                        int pageNum;
                        if (idx < 0)
                            pageNum = int.Parse(page);
                        else
                            pageNum = int.Parse(page.Substring(0, idx));
                        bool hit = false;
                        if (pageRange == null)
                            hit = true;
                        else {
                            int len = pageRange.Length & 0x7ffffffe;
                            for (int k = 0; k < len; k += 2) {
                                if (pageNum >= pageRange[k] && pageNum <= pageRange[k + 1]) {
                                    hit = true;
                                    break;
                                }
                            }
                        }
                        if (hit) {
                            if (idx < 0)
                                page = (pageNum + pageShift) + "";
                            else
                                page = (pageNum + pageShift) + page.Substring(idx);
                        }
                        map["Page"] = page;
                    }
                }
                IList<Dictionary<String, Object>> kids = null;
                if (map.ContainsKey("Kids"))
                    kids = (IList<Dictionary<String, Object>>)map["Kids"];
                if (kids != null)
                    ShiftPageNumbers(kids, pageShift, pageRange);
            }
        }