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?