public static void SetPageBackgroundColor(this PdfInfo pdfInfo, int pageNumber, BaseColor color = null) { if (color == null) { color = BaseColor.WHITE; } using (PdfReader reader = new PdfReader(pdfInfo.GetBytes())) { using (MemoryStream ms = new MemoryStream()) { using (PdfStamper stamper = new PdfStamper(reader, ms)) { PageInfo pageInfo = pdfInfo.GetPage(pageNumber); Rectangle rectangle = new Rectangle(0, 0, Utilities.MillimetersToPoints(pageInfo.PageWidth), Utilities.MillimetersToPoints(pageInfo.PageHeight), 0) { BackgroundColor = color }; var cb = stamper.GetUnderContent(pageNumber); cb.Rectangle(rectangle); } pdfInfo.UpdateBytes(ms.ToArray()); } } }
public static void Compress(this PdfInfo pdfInfo) { using (var reader = new PdfReader(pdfInfo.GetBytes())) { using (MemoryStream ms = new MemoryStream()) { using (PdfStamper stamper = new PdfStamper(reader, ms)) { stamper.Writer.CompressionLevel = 9; int total = reader.NumberOfPages + 1; for (int i = 1; i < total; i++) { reader.SetPageContent(i, reader.GetPageContent(i)); } stamper.SetFullCompression(); stamper.FormFlattening = true; stamper.AnnotationFlattening = true; stamper.FreeTextFlattening = true; reader.RemoveUnusedObjects(); } pdfInfo.UpdateBytes(ms.ToArray()); } } }
public static PdfInfo CompressImage(this PdfInfo pdfInfo, ImageInfo image, IImageConverter converter) { byte[] convertedBytes = converter.Convert(image.ImageBytes); //PdfImage newImage = PdfImage.GetInstance(convertedBytes); //ImageCodecInfo encoderInfo = ImageCodecInfo.GetImageEncoders().First(i => i.MimeType == "image/png"); //ConvertToPng c = new ConvertToPng(); //NetImage netImage = c.Convert(image.ImageBytes); //convertedBytes = System.IO.File.ReadAllBytes(@"x:\img.jpg"); Image newImage = Image.GetInstance(convertedBytes); using (PdfReader reader = new PdfReader(pdfInfo.GetBytes())) { using (MemoryStream ms = new MemoryStream()) { using (PdfStamper stamper = new PdfStamper(reader, ms)) { PdfDictionary page = reader.GetPageN(image.PageNumber); ObjectFinder objectFinder = new ObjectFinder(page); PdfObject imgObject = objectFinder.FindObjectByGuid(image.ID); if (imgObject != null) { PdfReader.KillIndirect(imgObject); stamper.Writer.AddDirectImageSimple(newImage, (PRIndirectReference)imgObject); } } pdfInfo.UpdateBytes(ms.ToArray()); } } return(pdfInfo); }