itextsharp PdfCopia y páginas de paisaje

Estoy usando itextsharp para unir varios documentos pdf y agregar un pie de página. Mi código funciona bien, excepto en las páginas horizontales, no detecta la rotación de la página, el pie de página no está centrado en horizontal:

    public static int AddPagesFromStream(Document document, PdfCopy pdfCopy, Stream m, bool addFooter, int detailPages, string footer, int footerPageNumOffset, int numPages, string pageLangString, string printLangString)
    {
        CreateFont();
        try
        {
            m.Seek(0, SeekOrigin.Begin);
            var reader = new PdfReader(m);

            // get page count
            var pdfPages = reader.NumberOfPages;
            var i = 0;

            // add pages
            while (i < pdfPages)
            {
                i++;

                // import page with pdfcopy
                var page = pdfCopy.GetImportedPage(reader, i);

                // get page center
                float posX;
                float posY;
                var rotation = page.BoundingBox.Rotation;
                if (rotation == 0 || rotation == 180)
                {
                    posX = page.Width / 2;
                    posY = 0;
                }
                else
                {
                    posX = page.Height / 2;
                    posY = 20f;
                }

                var ps = pdfCopy.CreatePageStamp(page);
                var cb = ps.GetOverContent();

                // add footer
                cb.SetColorFill(BaseColor.WHITE);
                var gs1 = new PdfGState {FillOpacity = 0.8f};
                cb.SetGState(gs1);
                cb.Rectangle(0, 0, document.PageSize.Width, 46f + posY);
                cb.Fill();

                // Text
                cb.SetColorFill(BaseColor.BLACK);
                cb.SetFontAndSize(baseFont, 7);
                cb.BeginText();

                // create text
                var pages = string.Format(pageLangString, i + footerPageNumOffset, numPages);
                cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, printLangString, posX, 40f + posY, 0f);
                cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, footer, posX, 28f + posY, 0f);
                cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, pages, posX, 20f + posY, 0f);
                cb.EndText();

                ps.AlterContents();

                // add page to new pdf
                pdfCopy.AddPage(page);
            }

            // close PdfReader
            reader.Close();
            // return number of pages
            return i;
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            return 0;
        }
    }

¿Cómo detecto el formato de rotación de página (por ejemplo, paisaje) en este caso? El ejemplo dado funciona para PdfReader pero no para PdfCopy.

Edición: ¿Por qué necesito PdfCopy? He intentado copiar una palabra pdf exportar. Algunos hipervínculos de palabras no funcionarán cuando intente copiar páginas con PdfReader. Solamente PdfCopy transfiere toda la información necesaria de la página.

Edición: (SOLUCIONADO) Necesitas usar reader.GetPageRotation (i);

Respuestas a la pregunta(2)

Su respuesta a la pregunta