private bool ObjectsIsEquals(PdfObject outObj, PdfObject cmpObj)
        {
            PdfObject outDirectObj = PdfReader.GetPdfObject(outObj);
            PdfObject cmpDirectObj = PdfReader.GetPdfObject(cmpObj);

            if (outDirectObj == null || cmpDirectObj.Type != outDirectObj.Type)
            {
                return(false);
            }
            if (cmpDirectObj.IsDictionary())
            {
                PdfDictionary cmpDict = (PdfDictionary)cmpDirectObj;
                PdfDictionary outDict = (PdfDictionary)outDirectObj;
                if (cmpDict.IsPage())
                {
                    if (!outDict.IsPage())
                    {
                        return(false);
                    }
                    RefKey cmpRefKey = new RefKey((PRIndirectReference)cmpObj);
                    RefKey outRefKey = new RefKey((PRIndirectReference)outObj);
                    if (cmpPagesRef.Contains(cmpRefKey) && cmpPagesRef.IndexOf(cmpRefKey) == outPagesRef.IndexOf(outRefKey))
                    {
                        return(true);
                    }
                    return(false);
                }
                if (!ObjectsIsEquals(outDict, cmpDict))
                {
                    return(false);
                }
            }
            else if (cmpDirectObj.IsStream())
            {
                if (!ObjectsIsEquals((PRStream)outDirectObj, (PRStream)cmpDirectObj))
                {
                    return(false);
                }
            }
            else if (cmpDirectObj.IsArray())
            {
                if (!ObjectsIsEquals((PdfArray)outDirectObj, (PdfArray)cmpDirectObj))
                {
                    return(false);
                }
            }
            else if (cmpDirectObj.IsName())
            {
                if (!ObjectsIsEquals((PdfName)outDirectObj, (PdfName)cmpDirectObj))
                {
                    return(false);
                }
            }
            else if (cmpDirectObj.IsNumber())
            {
                if (!ObjectsIsEquals((PdfNumber)outDirectObj, (PdfNumber)cmpDirectObj))
                {
                    return(false);
                }
            }
            else if (cmpDirectObj.IsString())
            {
                if (!ObjectsIsEquals((PdfString)outDirectObj, (PdfString)cmpDirectObj))
                {
                    return(false);
                }
            }
            else if (cmpDirectObj.IsBoolean())
            {
                if (!ObjectsIsEquals((PdfBoolean)outDirectObj, (PdfBoolean)cmpDirectObj))
                {
                    return(false);
                }
            }
            else
            {
                throw new InvalidOperationException();
            }
            return(true);
        }
示例#2
0
        public static string GetObjectInfo(PdfObject pdfObject)
        {
            StringBuilder sb = new StringBuilder();

            if (pdfObject != null)
            {
                if (pdfObject.IsBoolean())
                {
                    sb.Append(", bool");
                }
                if (pdfObject.IsNumber())
                {
                    sb.Append(", number");
                }
                if (pdfObject.IsString())
                {
                    sb.Append(", string");
                }
                if (pdfObject.IsLiteral())
                {
                    sb.Append(", literal");
                }
                if (pdfObject.IsArray())
                {
                    sb.Append(", array");
                }
                if (pdfObject.IsDictionary())
                {
                    sb.Append(", dictionary");
                }
                if (pdfObject.IsName())
                {
                    sb.Append(", name");
                }
                if (pdfObject.IsStream())
                {
                    sb.Append(", stream");
                }
                if (pdfObject.IsIndirect())
                {
                    sb.Append(", indirect");
                }
                if (pdfObject.IsIndirectReference())
                {
                    sb.Append(", indirect reference");
                }
                if (pdfObject.IsModified())
                {
                    sb.Append(", modified");
                }
                if (pdfObject.IsNull())
                {
                    sb.Append(", null");
                }
                if (sb.Length > 0)
                {
                    sb.Remove(0, 2);
                }
            }
            else
            {
                sb.Append("null");
            }
            return(sb.ToString());
        }