iTextSharp.text.pdf.PdfReader.RebuildXref C# (CSharp) Метод

RebuildXref() защищенный Метод

protected RebuildXref ( ) : void
Результат void
        protected internal void RebuildXref() {
            hybridXref = false;
            newXrefType = false;
            tokens.Seek(0);
            int[][] xr = new int[1024][];
            int top = 0;
            trailer = null;
            byte[] line = new byte[64];
            for (;;) {
                int pos = tokens.FilePointer;
                if (!tokens.ReadLineSegment(line))
                    break;
                if (line[0] == 't') {
                    if (!PdfEncodings.ConvertToString(line, null).StartsWith("trailer"))
                        continue;
                    tokens.Seek(pos);
                    tokens.NextToken();
                    pos = tokens.FilePointer;
                    try {
                        PdfDictionary dic = (PdfDictionary)ReadPRObject();
                        if (dic.Get(PdfName.ROOT) != null)
                            trailer = dic;
                        else
                            tokens.Seek(pos);
                    }
                    catch {
                        tokens.Seek(pos);
                    }
                }
                else if (line[0] >= '0' && line[0] <= '9') {
                    int[] obj = PRTokeniser.CheckObjectStart(line);
                    if (obj == null)
                        continue;
                    int num = obj[0];
                    int gen = obj[1];
                    if (num >= xr.Length) {
                        int newLength = num * 2;
                        int[][] xr2 = new int[newLength][];
                        Array.Copy(xr, 0, xr2, 0, top);
                        xr = xr2;
                    }
                    if (num >= top)
                        top = num + 1;
                    if (xr[num] == null || gen >= xr[num][1]) {
                        obj[0] = pos;
                        xr[num] = obj;
                    }
                }
            }
            if (trailer == null)
                throw new InvalidPdfException("trailer not found.");
            xref = new int[top * 2];
            for (int k = 0; k < top; ++k) {
                int[] obj = xr[k];
                if (obj != null)
                    xref[k * 2] = obj[0];
            }
        }