protected internal static PdfObject DuplicatePdfObject(PdfObject original, PdfReader newReader) {
if (original == null)
return null;
switch (original.Type) {
case PdfObject.DICTIONARY: {
return DuplicatePdfDictionary((PdfDictionary)original, null, newReader);
}
case PdfObject.STREAM: {
PRStream org = (PRStream)original;
PRStream stream = new PRStream(org, null, newReader);
DuplicatePdfDictionary(org, stream, newReader);
return stream;
}
case PdfObject.ARRAY: {
PdfArray arr = new PdfArray();
for (ListIterator it = ((PdfArray)original).GetListIterator(); it.HasNext();) {
arr.Add(DuplicatePdfObject((PdfObject)it.Next(), newReader));
}
return arr;
}
case PdfObject.INDIRECT: {
PRIndirectReference org = (PRIndirectReference)original;
return new PRIndirectReference(newReader, org.Number, org.Generation);
}
default:
return original;
}
}