2016-05-31 3 views
-5

Я хочу сохранить pdf-файл в базу данных, если файл PDF более 5 МБ, тогда база данных станет тяжелой или обременительной для большего количества файлов no.of, так что я хочу уменьшите размер файла Pdf как можно меньше .... Я пробовал следующий код, но не работал. Помогите сжать большой PDF до меньшего размера. Например, если размер PDF составляет 2 Мб, он сжимается до 700 Кб. Я попробовал так много примеров, но не получил выход. поэтому, пожалуйста, помогите ..Сжатие PDF до меньшего размера (т.е. от 1 МБ до 300 КБ) в C#

 PdfReader reader = new PdfReader("D:/User Guid for Artificial Skin.pdf"); 
     PdfStamper stamper = new PdfStamper(reader, new FileStream("d:/pdfdoccompressed.pdf", FileMode.Create), PdfWriter.VERSION_1_5); 
     reader.SetPageContent(1, reader.GetPageContent(1)); 
     int pageNum = reader.NumberOfPages; 
     for (int i = 1; i <= pageNum; i++) 
     { 
      reader.SetPageContent(i, reader.GetPageContent(i)); 
     } 
     stamper.FormFlattening = true; 
     stamper.Writer.CompressionLevel = PdfStream.BEST_COMPRESSION; 
     stamper.SetFullCompression(); 
     stamper.Close(); 
+3

Что заставляет вас думать, что вы можете сжать PDF еще дальше? – CodeCaster

+0

извините, я не могу понять, что вы сказали –

+1

Вы говорите, что у вас есть пример файла размером 1 МБ и что вы хотите, чтобы этот файл был сжат до 300 КБ. Почему у вас есть ожидание, что это возможно? Имеет ли другое программное обеспечение то же самое в одном файле? Вы знаете, как работает сжатие? – CodeCaster

ответ

0

Точка с lossless compression является то, что есть конец, сколько вы можете сжимать данные. Когда вы смотрите в файл в виде контейнера и применяете к нему общий алгоритм сжатия, вы не будете сильно сглаживать файл, поскольку по умолчанию они сохраняются довольно оптимально.

Очень упрощенно: файлы PDF обычно могут быть значительно меньше, если они содержат много неиспользуемых (внедренных) объектов, таких как шрифты и поля формы, и неоптимизированные изображения. Любой оптимизатор, который вы найдете, просто удалит неиспользуемые объекты и уменьшит эти изображения, сохранив их либо с меньшим количеством точек на дюйм («меньшее разрешение»), так и с меньшим количеством бит на пиксель («меньший битдип») или и тем, и другим.

Итак, пройдя PdfStream.BEST_COMPRESSION в PdfStamper, вы уже делаете все, что можете. Вы просто не можете тривиально и значительно сжимать PDF намного больше, чем PdfStamper уже делает.

Однако, из ваших комментариев и исправлений просто кажется, что вы боитесь, что в будущем это повредит вашу базу данных (хотя она предназначена для хранения данных и их много). Но эта проблема не является достаточно конкретной для нас, чтобы помочь вам.

Так увидеть любой из многих предыдущих дискуссий на самом деле должны ли вы хранить данные так:

И многие, многие другие.

 Смежные вопросы

  • Нет связанных вопросов^_^