ITextSharp returns the same pdf size when I try to compress a pdf file with different levels

I am reading pdf and pasting some content using itextsharp. Received byte[]is transmitted to the following method along with the compression level.

public static byte[] method(byte[] pdf,int compressionlevel)
        {
            using (MemoryStream outputPdfStream1 = new MemoryStream())
            {
                //PdfReader reader1 = new PdfReader(pdf);
                //PdfStamper stamper1 = new PdfStamper(reader1, outputPdfStream1);
                //int level = (int)compressionlevel;
                //if (level <= 9)
                //    stamper1.Writer.CompressionLevel = (int)compressionlevel;
                //else
                //    stamper1.Writer.SetFullCompression();
                //stamper1.SetFullCompression();
                //stamper1.Close();
                //byte[] newfile = outputPdfStream1.ToArray();
                //return newfile;

                PdfReader reader = new PdfReader(pdf);
                PdfStamper stamper = new PdfStamper(reader, outputPdfStream1,PdfWriter.VERSION_1_5);
                int level = (int)compressionlevel;
                if (level <= 9)
                {
                   stamper.Writer.CompressionLevel = level;
                }
                else
                    stamper.Writer.SetFullCompression();
                int total = reader.NumberOfPages + 1;
                for (int i = 1; i < total; i++)
                {
                    reader.SetPageContent(i, reader.GetPageContent(i));
                }
                stamper.SetFullCompression();
                stamper.Close();
                byte[] newfile = outputPdfStream1.ToArray();
                return newfile;
            }
        } 

If I comment stamper.SetFullCompression();, then this method returns the same size of the byte array regardless of the compression level am passing (am going from 0 to 9 in each case).

If I uncomment stamper.SetFullCompression();, this method returns a fully compressed version of the input byte, regardless of the compression level !!!

What is the purpose / difference stamper.SetFullCompression();and stamper.Writer.SetFullCompression();?

What is the correct way to use different compression levels so that I can see different sizes in each case?

+3
source
1

, .

PdfStamper - , PdfStamperImp . PdfStamperImp PdfWriter, stamper.Writer, . PdfStamper . , .

stamper.SetFullCompression();
stamper.Writer.SetFullCompression();

, SetFullCompression CompressionLevel . " " , ​​ PDF 1.5 " ", PDF , . , , "", , , . (, , , .)

CompressionLevel , , 0 9 -1 ( , ). PdfStream, . "". GetPageContent() SetPageContent(), , Writer. , SetPageContent(), , .

reader.SetPageContent(1, reader.GetPageContent(1), PdfStream.BEST_COMPRESSION);
+4

All Articles