параметр сжатия pdftk
Я использую pdftk чтобы сжать pdf с помощью следующей командной строки
pdftk file1.pdf output file2.pdf compress
он работает, как вес моего файла уменьшился.
есть ли [опции], чтобы изменить сжатие???
или, может быть, другие решения для сжатия моего файла? Это тяжело, потому что некоторые графики имеют много очков. Есть ли способ преобразовать эти графики в jpg, например, и адаптировать сжатие?
10 ответов:
у меня была та же проблема, и я нашел два разных решения (см. Это thread для более подробной информации). Оба значительно уменьшили размер моего несжатого PDF-файла.
слабовато (с потерями):
convert input.pdf -compress Zip output.pdfUnpixelated (без потерь, но может отображаться немного по-другому):
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile=output.pdf input.pdfEdit: Я только что обнаружил еще один вариант (для сжатия без потерь), который позволяет избежать неприятных gs команда. qpdf это аккуратный инструмент, который преобразует PDF-файлы (сжатие / декомпрессия, шифрование / дешифрование) и намного быстрее, чем команда gs:
qpdf --linearize input.pdf output.pdf
эта процедура работает довольно хорошо
pdf2ps large.pdf very_large.ps ps2pdf very_large.ps small.pdfдать ему попробовать.
попытка сжать PDF, который я сделал с 400ppi tiffs, в основном 8-бит, несколько 24-бит, с сжатием PackBits, используя
tiff2pdfсжатый с застежкой-молнией / выкачать. Одна проблема у меня была с каждым из этих методов: ни один из вышеперечисленных методов не сохранил закладки TOC, которые я кропотливо вручную создал в Acrobat Pro X. Даже не рекомендуетсяebookнастройкаgs. Конечно, я мог бы просто открыть копию оригинала с неповрежденным TOC и сделатьReplace pagesно, к сожалению, ни один из этих методы сделали удовлетворительную работу с самого начала. Либо они уменьшили размер настолько, что качество было неприемлемо пиксельным, либо они вообще не уменьшили размер и в одном случае фактически увеличили его, несмотря на качество потеря.
pdftk compress:no change in size bookmarks TOC are gone
gs screen:takes a ridiculously long time and 100% CPU errors: sfopen: gs_parse_file_name failed. ? | ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile 74.8MB-->10.2MB hideously pixellated bookmarks TOC are gone
gs printer:takes a ridiculously long time and 100% CPU no errors 74.8MB-->66.1MB light blue background on pages 1-4 bookmarks TOC are gone
gs ebook:errors: sfopen: gs_parse_file_name failed. ./base/gsicc_manage.c:1050: gsicc_open_search(): Could not find default_rgb.ic | ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile 74.8MB-->32.2MB badly pixellated bookmarks TOC are gone
qpdf --linearize:very fast, a few seconds no size change bookmarks TOC are gone
pdf2ps:took very long time output_pdf2ps.ps 74.8MB-->331.6MB
ps2pdf:pretty fast 74.8MB-->79MB very slightly degraded with sl. bluish background bookmarks TOC are gone
если размер файла все еще слишком велик, это может помочь использовать ps2pdf для уменьшения разрешения созданного pdf-файла:
pdf2ps input.pdf tmp.ps ps2pdf -dPDFSETTINGS=/screen -dDownsampleColorImages=true -dColorImageResolution=200 -dColorImageDownsampleType=/Bicubic tmp.ps output.pdfизменить значение - dColorImageResolution возможность достижения результата, который соответствует вашим потребностям (значение описывает разрешение изображения в DPIs). Если ваш входной файл находится в оттенках серого, замените цвета через серый или использование обоих параметров в приведенной выше команде также может помочь. Дальнейшая тонкая настройка возможно, изменив - dPDFSETTINGS до / default или /принтера. Для объяснения всех возможных вариантов обратитесь к руководство ps2pdf.
после попытки gpdf как nullglob предположил, я обнаружил, что получил те же результаты сжатия (файл ~900mb до ~30mb), просто используя принтер cups-pdf. Это может быть проще / предпочтительнее, если вы уже просматриваете документ и вам нужно сжать только один или два документа.
в Ubuntu 12.04, вы можете установить это путем
sudo apt-get install cups-pdfпосле установки, не забудьте проверить в Системные Инструменты>администрирование > печати > щелкните правой кнопкой мыши " PDF "и установите его в положение "включить"
по умолчанию, результат сохраняется в папке с именем PDF в вашем домашнем каталоге.
Я не видел большого уменьшения размера файла с помощью qpdf. Лучший способ, который я нашел, - это после того, как pdftk будет использовать ghostscript для преобразования pdf в postscript, а затем обратно в pdf. В PHP вы бы использовали exec:
$ps = $save_path.'/psfile.ps'; exec('ps2ps2 ' . $pdf . ' ' . $ps); unlink($pdf); exec('ps2pdf ' .$ps . ' ' . $pdf); unlink($ps);я использовал это несколько минут назад, чтобы взять выход pdftk от 490k до 71k.
pdf2ps large.pdf small.pdfдостаточно, а не в двух шагахpdf2ps large.pdf very_large.ps ps2pdf very_large.ps small.pdf
однострочный вариант pdf2ps (ли) фактически увеличил размер pdf. Тем не менее, два шага сделал лучше. И он может быть объединен в один, используя перенаправление от & к стандартным входам / выходам и трубам:
pdf2ps большие.pdf - / ps2pdf-малый.pdf
уменьшил PDF, созданный xsane с 18 мес до 630 ко!
ссылки теряются, но для настоящего примера это не проблема... и был самый простой способ добиться желаемого результата.
в случае, если вы хотите сжать PDF, который содержит много выбираемого текста, в Windows вы можете использовать Компрессор NicePDF - выберите опцию "Flate". После того, как я попробовал все (cpdf, pdftk, gs), это, наконец, помогло мне сжать мой 1360 страниц PDF с 500 МБ до 10 МБ.
У меня была та же проблема, и я использовал эту функцию для сжатия отдельных страниц, что приводит к сжатию размера файла до 1/3 от исходного размера.
for (int i = 1; i <= theDoc.PageCount; i++) { theDoc.PageNumber = i; theDoc.Flatten(); }
Comments