internal void ReplacePage(PdfReader r, int pageImported, int pageReplaced)
{
PdfDictionary pageN = reader.GetPageN(pageReplaced);
if (pagesToContent.ContainsKey(pageN))
throw new InvalidOperationException(MessageLocalization.GetComposedMessage("this.page.cannot.be.replaced.new.content.was.already.added"));
PdfImportedPage p = GetImportedPage(r, pageImported);
PdfDictionary dic2 = reader.GetPageNRelease(pageReplaced);
dic2.Remove(PdfName.RESOURCES);
dic2.Remove(PdfName.CONTENTS);
MoveRectangle(dic2, r, pageImported, PdfName.MEDIABOX, "media");
MoveRectangle(dic2, r, pageImported, PdfName.CROPBOX, "crop");
MoveRectangle(dic2, r, pageImported, PdfName.TRIMBOX, "trim");
MoveRectangle(dic2, r, pageImported, PdfName.ARTBOX, "art");
MoveRectangle(dic2, r, pageImported, PdfName.BLEEDBOX, "bleed");
dic2.Put(PdfName.ROTATE, new PdfNumber(r.GetPageRotation(pageImported)));
PdfContentByte cb = GetOverContent(pageReplaced);
cb.AddTemplate(p, 0, 0);
PageStamp ps = pagesToContent[pageN];
ps.replacePoint = ps.over.InternalBuffer.Size;
}