internal void AddDocument(PdfReader reader)
{
if (!reader.IsOpenedWithFullPermissions)
throw new BadPasswordException(MessageLocalization.GetComposedMessage("pdfreader.not.opened.with.owner.password"));
OpenDoc();
if (readers2intrefs.ContainsKey(reader)) {
reader = new PdfReader(reader);
}
else {
if (reader.Tampered)
throw new DocumentException(MessageLocalization.GetComposedMessage("the.document.was.reused"));
reader.ConsolidateNamedDestinations();
reader.Tampered = true;
}
reader.ShuffleSubsetNames();
readers2intrefs[reader] = new IntHashtable();
readers.Add(reader);
int len = reader.NumberOfPages;
IntHashtable refs = new IntHashtable();
for (int p = 1; p <= len; ++p) {
refs[reader.GetPageOrigRef(p).Number] = 1;
reader.ReleasePage(p);
}
pages2intrefs[reader] = refs;
visited[reader] = new IntHashtable();
fields.Add(reader.AcroFields);
UpdateCalculationOrder(reader);
}