Example #1
0
        internal void Load(PdfFile PdfFile, int[] PageNumbers, int startNumber)
        {
            this.PdfFile     = PdfFile;
            this.pageNumbers = new ArrayList();
            this.sObjects    = new Hashtable();
            int part  = 0;
            int total = PageNumbers.Length;

            foreach (int PageNumber in PageNumbers)
            {
                this.ProgressEvent(part, total);
                PdfFileObject page = PdfFile.PageList[PageNumber] as PdfFileObject;
                page.PopulateRelatedObjects(PdfFile, this.sObjects);
                this.pageNumbers.Add(page.number);
                part++;
            }
            this.transHash = this.CalcTransHash(startNumber);
            foreach (PdfFileObject pfo in this.sObjects.Values)
            {
                pfo.Transform(transHash);
            }
        }
Example #2
0
 internal void PopulateRelatedObjects(PdfFile PdfFile, Hashtable container)
 {
     if (!container.ContainsKey(this.number))
     {
         container.Add(this.number, this);
         Match m = Regex.Match(this.text, @"(?'parent'(/Parent)*)\s*(?'id'\d+) 0 R[^G]", RegexOptions.ExplicitCapture);
         while (m.Success)
         {
             int  num       = int.Parse(m.Groups["id"].Value);
             bool notparent = m.Groups["parent"].Length == 0;
             if (notparent & !container.Contains(num))
             {
                 PdfFileObject pfo = PdfFile.LoadObject(num);
                 if (pfo != null & !container.Contains(pfo.number))
                 {
                     pfo.PopulateRelatedObjects(PdfFile, container);
                 }
             }
             m = m.NextMatch();
         }
     }
 }