Вопрос или проблема
Я ищу способ уменьшить размер pdf в Ubuntu (уменьшив качество изображений).
Я знаю, что это можно сделать в Ghostscript, введя следующую команду в терминале:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
Проблема в том, что я не могу точно задать качество. Параметр -dPDFSETTINGS=/screen
определяет качество; но альтернативы довольно жесткие (например, можно использовать -dPDFSETTINGS=/ebook
для немного лучшего качества).
Я ищу способ уменьшить размер pdf так, чтобы я мог специфицировать желаемое качество численно.
Мне удалось немного изменить вашу команду, успешно используя опцию -r300 от @drN. Опция -r позволяет задать разрешение на выходе как в pdf, так и в png.
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default \
-dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages \
-dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf
Редактировать: В новых версиях gs синтаксис теперь короче:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default \
-dQUIET -dDetectDuplicateImages \
-dCompressFonts=true -r150 -o output.pdf input.pdf
Спасибо @pierre-adrien
Для высококачественных сканирований, уменьшение выходного разрешения может быть полезно использовать /printer
вместо /default
для значения -dPDFSETTINGS
.
Дополнительную документацию можно найти здесь: https://web.mit.edu/ghostscript/www/Ps2pdf.htm#Options
Самый простой способ, который я нашел, — это открыть исходный PDF-файл в LibreOffice Draw, а затем экспортировать в PDF с ожидаемым DPI.
Окно диалога экспорта Draw позволяет вам задать DPI и другие параметры для экспортируемого PDF.
Эти два сообщения, которые я опубликовал на Stackoverflow, должны вам помочь. Я пытался уменьшить размер pdf, обеспечивая, чтобы они соответствовали определенному dpi или ppi для моей диссертации.
Уменьшение размера pdf с помощью ghostscript
Изменение dpi изображений pdf с помощью gs
Вы пробовали поиграть с convert
в Linux?
Редактировать:
gs \
-o out300.png \
-sDEVICE=pngalpha \
-r300 \
input.pdf
Если я правильно помню, r300
— это выходное dpi
, но вам следует проверить. Эта команда конвертирует pdf в png.
ИЛИ
convert -units PixelsPerInch myPic.pdf -density 300 fileout.pdf
Дайте нам знать, как пройдет! Это для преобразования pdf или любого другого формата в любой другой формат. Я просто использовал входной файл myPic.pdf и выходной файл fileout.pdf
Если уменьшение размера файла является вашей основной целью (и не только уменьшение размера фигур и также не для указания качества численно), как насчет ps2pdf
:
ps2pdf input.pdf output.pdf
В зависимости от характеристик PDF, это может уменьшить размер файла на порядок.
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=myNewFile.pdf myOldFile.pdf
Это самый простой способ, на мой взгляд, может уменьшить размер до 50+/- Кб. В вашем терминале перейдите в директорию файла: пример
cd ~/document/files
Затем введите приведенный выше код, где:
myNewFile.pdf
это новое имя файла, а
myOldFile.pdf
это имя файла.
Вы можете использовать команду gs
, как предложили другие, но убедитесь, что вы изменили dPDFSETTINGS
на screen
, для изображений низкого качества (75 dpi), или ebook
, для 150 dpi.
Вот полный список dPDFSETTINGS
, из которых можно выбрать (основанный на этой ссылке):
-
-dPDFSETTINGS=/screen
— Низкое качество и небольшой размер при 72dpi. -
-dPDFSETTINGS=/ebook
— Чуть лучшее качество, но также больший размер файла при 150dpi. -
-dPDFSETTINGS=/prepress
— Высокое качество и большой размер при 300 dpi.
_ -dPDFSETTINGS=/default
— Система выбирает лучший вывод, что может создать более крупные PDF-файлы.
Вы используете команду, подобную следующей:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages \
-dCompressFonts=true -sOutputFile=output.pdf input.pdf
Из мого ответа на похожий вопрос Unix & Linux Stack Exchange:
Если PDF-файл состоит полностью из данных изображения;
pdftk inputFile.pdf burst mogrify -density 300 -format jpg -quality 20 pg_*.pdf convert *.jpg -auto-orient outputFile.pdf
Значение плотности может соответствовать плотности исходного изображения (например, 300 dpi), но качество jpeg должно быть ниже, чем у исходного изображения (например, 20).
Вы можете использовать ocrmypdf с флагом --oversample <DPI>
, чтобы уменьшить размер pdf.
Например:
ocrmypdf --skip-text --oversample 150 input.pdf output.pdf
Я обычно делаю так:
ocrmypdf --skip-text --oversample 150 input.pdf input.pdf
чтобы сэкономить время на переименовании pdf-файла. Я выбрал dpi равным 150 как ссылку на ghostscript с флагом -dPDFSETTINGS=/ebook
.
pdf2ps large.pdf very_large.ps
ps2pdf very_large.ps small.pdf
Вы также можете открыть в gimp как слои, экспортировать в pdf снова как слои – это превратило pdf размером 1 МБ в 275 Кб для меня.
Ответ или решение
Краткий ответ на вопрос о том, как уменьшить размер PDF-файла в Ubuntu, заключается в том, чтобы использовать различные инструменты и подходы, такие как Ghostscript, LibreOffice Draw и другие команды. Основной акцент делается на возможности настройки качества изображений, что позволяет пользователям контролировать результат.
Как уменьшить размер PDF-файла в Ubuntu
1. Использование Ghostscript
Ghostscript является мощным инструментом для работы с PDF-файлами. Вы можете использовать следующие команды для уменьшения размера файла, при этом задав желаемое разрешение (DPI):
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -o output.pdf input.pdf
- -r150: Устанавливает разрешение выходного PDF на 150 DPI.
- -dPDFSETTINGS: Позволяет выбирать качество. Значения, которые можно использовать:
/screen
: низкое качество (примерно 72 DPI)/ebook
: среднее качество (примерно 150 DPI)/printer
: высокое качество (примерно 300 DPI)
2. Использование LibreOffice Draw
Если вам требуется более удобный графический интерфейс, попробуйте открыть PDF-файл в LibreOffice Draw и экспортировать его как PDF, задав необходимое разрешение DPI в диалоговом окне экспорта. Это проще и позволяет вам контролировать качество изображений.
3. Использование утилиты pdftk
и convert
Если ваш PDF-файл состоит в основном из растровых изображений, вы можете воспользоваться следующей последовательностью команд:
pdftk inputFile.pdf burst
mogrify -density 300 -format jpg -quality 20 pg_*.pdf
convert *.jpg -auto-orient outputFile.pdf
Здесь:
- mogrify: Уменьшает качество изображений до 20%.
- convert: Собирает обработанные изображения обратно в PDF.
4. OCRmyPDF
Также можно использовать ocrmypdf
для уменьшения размера PDF через переупаковку:
ocrmypdf --skip-text --oversample 150 input.pdf output.pdf
Этот подход поможет сохранить текст в PDF с меньшим размером файла.
5. Альтернативные инструменты
- GIMP: Откройте PDF в GIMP как слои, а затем экспортируйте его обратно в PDF. Это может значительно сократить размер файла.
- ps2pdf: Для быстрого уменьшения размера файла, примените следующую команду:
ps2pdf input.pdf output.pdf
Заключение
Существует множество подходов к уменьшению размера PDF-файлов в Ubuntu. Выбор инструмента зависит от ваших задач, желаемого контроля над качеством и удобства использования. Ghostscript предоставляет мощные функции для настройки разрешения и качества, в то время как решения, такие как LibreOffice и GIMP, предлагают более визуальные методы работы с PDF. Не забывайте экспериментировать с различными параметрами, чтобы найти оптимальное решение для своих нужд.