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); }
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()); }