ITextSharp retornando pdf do mesmo tamanho quando estou tentando compactar arquivos PDF com níveis diferentes
Estou lendo um pdf e injetando algum conteúdo usando o itextsharp. O resultadobyte[]
é passado para o método abaixo junto com o nível de compactação.
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;
}
}
Se eu comentarstamper.SetFullCompression();
esse método está retornando o mesmo tamanho da matriz de bytes, independentemente do nível de compactação que estou passando (estou passando de 0 a 9 em cada caso).
Se eu descomentarstamper.SetFullCompression();
este método está retornando uma versão totalmente compactada do byte de entrada, independentemente do nível de compactação !!!
Qual é o objetivo / diferença destamper.SetFullCompression();
estamper.Writer.SetFullCompression();
?
Qual é a maneira correta de usar diferentes níveis de compactação para que eu possa ver tamanhos diferentes em cada caso?