Salve a tutti, vorrei creare un metodo che prende in input un pdf come array di byte e mi restituisce ancora un array di byte, effettuando delle opportune modifiche sulla formattazione delle varie pagine del PDF, per questo ho utilizzato la libreria iTextSharp.
Il problema è che non riesco a ricavare correttamente l'output generato, in basso il codice, dov'è che sbaglio?
Grazie.


codice:
public static byte[] RotateResizeFile(byte[] inputFile)
        {

            iTextSharp.text.pdf.PdfReader pdfRdr = new iTextSharp.text.pdf.PdfReader(inputFile);
            MemoryStream ms = new MemoryStream();
            byte[] output = null;

            for (int i = 1; i <= pdfRdr.NumberOfPages; i++)
            {
                iTextSharp.text.Document doc = 
new iTextSharp.text.Document(pdfRdr.GetPageSizeWithRotation(i));
            
                iTextSharp.text.pdf.PdfWriter outputWriter =
                iTextSharp.text.pdf.PdfWriter.GetInstance(doc, ms);

                doc.Open(); 
                doc.SetPageSize(iTextSharp.text.PageSize.A4);
                iTextSharp.text.pdf.PdfContentByte cb = outputWriter.DirectContent;  
                iTextSharp.text.pdf.PdfImportedPage page = 
                outputWriter.GetImportedPage(pdfRdr, i); 

                int rotation = pdfRdr.GetPageRotation(i);
                if (rotation == 90 || rotation == 270)
                {
                    if (rotation == 90)
                    {
                        cb.AddTemplate(page, 0, -1f, 1f, 0, 0, 
                        pdfRdr.GetPageSizeWithRotation(i).Height);
                    }
                    if (rotation == 270)
                    {
                        cb.AddTemplate(page, 0, 1.0F, -1.0F, 0, 
                        pdfRdr.GetPageSizeWithRotation(i).Width, 0);
                    }
                }
                else { cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0); }

                if (i > 1) {
                    output = Combine(output,cb.ToPdf(outputWriter));
                }
                else
                {
                    output = cb.ToPdf(outputWriter);
                }
                doc.Close();
                
            }

            return output;
}