2013-04-06 4 views
0

Сжимаю загруженные файлы .pdf и сохраняю их в файловой системе сервера. Все работает хорошо, но файл становится больше, от 30 КБ до 48 КБ. Что я могу делать неправильно? Вот часть кода сжать загруженный файл:сжатие pdf-файла делает его больше

FileStream sourceFile = System.IO.File.OpenRead(filePath); 
FileStream destFile = System.IO.File.Create(zipPath); 
GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress); 

try 
{ 
    int theByte = sourceFile.ReadByte(); 
    while (theByte != -1) 
    { 
     compStream.WriteByte((byte)theByte); 
     theByte = sourceFile.ReadByte(); 
    } 
} 

ответ

1

Я думаю, проблема в GZipLib здесь. Вместо этого я использовал DotNetZip, и теперь файл становится меньше ожидаемого. Его можно загрузить here.

-2

Что я могу делать неправильно?

Стандарт файла PDF уже обеспечивает сжатие различных частей. Так что вы получаете, вероятно, уже сжатый файл. И вы знаете, что происходит, когда вы пытаетесь сжать сжатый файл? Это то же самое, как если бы вы пытались сжать ZIP-файл: любопытное бесполезное усилие.

+2

Если я вручную сжимаю один и тот же файл в своей файловой системе, он становится меньше. –

0

Алгоритмы сжатия для System.IO.Compression .. ::. DeflateStream и System.IO.Compression .. ::. Классы GZipStream улучшились, так что уже сжатые данные больше не накачаны. Это приводит к значительно более высоким коэффициентам сжатия. Кроме того, 4-гигабайтное ограничение размера для сжатия потоков было удалено.

Это было исправлено в .NET 4.