Ejemplo n.º 1
0
        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());
                }
            }
        }
Ejemplo n.º 2
0
        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());
                }
            }
        }
Ejemplo n.º 3
0
        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);
        }