ITextSharp gibt PDF-Dateien gleicher Größe zurück, wenn ich versuche, PDF-Dateien mit verschiedenen Ebenen zu komprimieren

Ich lese ein PDF und füge Inhalte mit itextsharp ein. Das resultierendebyte[] wird zusammen mit der Komprimierungsstufe an die unten stehende Methode übergeben.

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

Wenn ich kommentierestamper.SetFullCompression(); dann gibt diese Methode die gleiche Größe des Bytearrays zurück, unabhängig von der Komprimierungsstufe, die übergeben wird (übergeben wird jeweils von 0 bis 9).

Wenn ich das Kommentarzeichen entfernestamper.SetFullCompression(); Diese Methode gibt eine vollständig komprimierte Version des Eingangsbytes zurück, unabhängig von der Komprimierungsstufe !!!

Was ist der Zweck / Unterschied vonstamper.SetFullCompression(); undstamper.Writer.SetFullCompression();?

Was ist der richtige Weg, um verschiedene Komprimierungsstufen zu verwenden, damit ich jeweils verschiedene Größen sehen kann?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage