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; }

Rispondi quotando