Какие-нибудь предложения по уменьшению файла PDF? - PullRequest
10 голосов
/ 05 марта 2009

У нас есть веб-система .net 2.0, которая динамически создает PDF-файлы. Некоторые из этих файлов могут быть довольно большими - 12 МБ +. Хотя время обработки не имеет значения, на самом деле, размер загружаемых файлов в некоторых случаях.

На данный момент давайте предположим, что наша библиотека PDF класса B уже создает самые маленькие файлы, которые она умеет. (Хотя, если у кого-то есть какие-либо предложения по этому вопросу, см. этот связанный вопрос .)

Однако, если взять рассматриваемый файл размером 12 МБ и отправить его через дистиллятор Acrobat, получится файл размером примерно 700 КБ, без заметной потери качества печати. ​​

Я бы хотел иметь какой-нибудь постпроцессор, который бы делал даже треть этого. У кого-нибудь есть какие-нибудь средства управления, о которых они знают, что они будут делать что-то подобное?

Чем дешевле, тем лучше для этого проекта, но мы не против отбросить несколько долларов.

(Некоторые упреждающие комментарии: естественно, переписывание существующего кода генерации PDF с помощью нового инструмента на данный момент не обсуждается. Кроме того, хотя Distiller, похоже, имеет API, вызывать его на веб-сервере не кажется наиболее эффективный курс - и Distiller немного дорогой. Наконец, мы бы также не обернули pdf в zip-файл или что-то подобное, поскольку это может несколько сбить с толку клиентов. Нет, правда.)

Спасибо!

Ответы [ 10 ]

17 голосов
/ 05 марта 2009

Используйте Ghostscript , который также доступен для 32-битных и 64-битных платформ Windows. Он распознает все Adobe Distiller параметры [1] и учитывает большинство из них . Кроме того, вы можете внедрить программы PostScript в процесс преобразования. Я использую его в течение года в предпечатной производственной среде на PDF-файлах с большим количеством изображений. Если параметры установлены правильно, размер файла может быть от 40 МБ до 800 КБ без видимой потери качества. Я обнаружил, что это довольно быстро, на самом деле в документации говорится, что может быть быстрее, чем Adobe Distiller .

И это бесплатно (как в пиве, так и в речи).

[1] См. distparm.pdf в папке справки Distiller или посмотрите здесь .

Как вы используете это

Вы вызываете его из командной строки со всеми требуемыми параметрами, входными и выходными файлами, и все готово.

Быстрый пример:

gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite\
   -dCompatibilityLevel=1.3 -dEncodeColorImages=true\
   -sOutputFile=output.pdf input.pdf

Некоторые ценные ресурсы:

2 голосов
/ 05 марта 2009

Существует несколько разновидностей PDF с различными размерами функциональности. Если вы конвертируете текстовые документы (word / excel / и т. Д.) В документы с изображениями (TIFF / JPG / BMP / и т. Д.), Это, вероятно, объясняет меньшие размеры файлов, которые дает вам дистиллятор. Вы должны убедиться, что ваша утилита не просто создает PDF-файлы только для изображений (которые обычно намного больше) из всего. Также формат сжатия очень важен ОСОБЕННО для цветных документов. Посмотрите на параметры конфигурации, которые позволяют настроить эти параметры. Если вы упомянули конкретный инструмент PDF Builder, мы могли бы оказать вам более конкретную помощь по этому вопросу.

Вот приличная ссылка на "разновидности" PDF-файлов:

2 голосов
/ 05 марта 2009

PDF обычно используют сжатие JBIG / JBIG2 / JPEG2000. Cvision's PDFCompressor является лучшим для сжатия PDF.

1 голос
/ 05 марта 2009

В Apago есть много инструментов для «очистки» PDF-файлов

http://www.apagoinc.com/

0 голосов
/ 05 марта 2009

Если ваша PDF-библиотека создает неоптимальные PDF-файлы, тогда загрузка и сохранение PDF-файла в любой другой библиотеке должны дать вам файлы меньшего размера. PDFNet SDK Тип 3 должен соответствовать этой задаче, а стоимость 360USD дешевле, чем в библиотеке Adobe PDF.

0 голосов
/ 05 марта 2009

Не включайте целые шрифты в PDF. Заботясь об этом, можно сэкономить несколько мегабайт.

0 голосов
/ 05 марта 2009

Помимо использования другой библиотеки, лучше всего сделать так, чтобы она работала правильно. Несколько советов по поводу вашего другого поста - я не уверен в каком-либо «пост-процессе», который вы хотели бы запустить, чтобы сжать файл.

Кроме того, разрешает ли ваш веб-сервер содержимое в формате gzipped HTTP? Прозрачный для конечного пользователя!

(При этом короткие PDF-файлы должны быть довольно непроницаемы для большинства методов сжатия - изображения должны быть сжаты во время рендеринга (и JPEG >> ZIP в этом случае) - но если у вас есть лот из текст, gzip может помочь)

0 голосов
/ 05 марта 2009

Если вы заинтересованы в сжатии без потерь, попробуйте мой инструмент Precomp и файловый компрессор на ваш выбор. В зависимости от содержимого вашего PDF-файла, Precomp обычно увеличивает ваш PDF-файл, чтобы впоследствии его можно было сжать намного лучше.

0 голосов
/ 05 марта 2009

У меня нет конкретного ответа на ваш вопрос, поэтому я надеюсь, что мой ответ не плохой.

Я использовал pdftk для различных задач, связанных с PDF. Его легко использовать из оболочки, и я вижу, что он имеет функцию сжатия. Вы можете попробовать это быстро, чтобы увидеть, подойдет ли это для последующей обработки вашего приложения.

0 голосов
/ 05 марта 2009

Отправить сообщение об ошибке создателю вашей pdf-библиотеки? Если это открытый исходный код, исправьте пару низко висящих фруктов (вероятно, их много) и отправьте патч?

...