У меня есть файл в формате 72.9MB, который мне нужно сжать до менее 500 КБ.
Файл был изображен в формате JPEG, который я просмотрел, а затем преобразован в pdf.
У меня есть файл в формате 72.9MB, который мне нужно сжать до менее 500 КБ.
Файл был изображен в формате JPEG, который я просмотрел, а затем преобразован в pdf.
aking1012 является правильным. С дополнительной информацией о возможных встроенных изображениях, гиперссылках и т. Д. Было бы гораздо легче ответить на этот вопрос! Р>
Вот несколько вариантов сценариев и командной строки. Используйте, как сочтете нужным.
Используйте следующую команду ghostscript :
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
-dPDFSETTINGS=/screen
более низкого качества, меньшего размера. ( 72 dpi ) -dPDFSETTINGS=/ebook
для лучшего качества, но немного больше pdf. ( 150 dpi ) -dPDFSETTINGS=/prepress
, аналогичное настройке Acrobat Distiller «Prepress Optimized» ( 300 dpi ) -dPDFSETTINGS=/printer
выбирает вывод, аналогичный настройке Acrobat Distiller «Оптимизация печати» ( 300 dpi ) -dPDFSETTINGS=/default
выбирает вывод, предназначенный для использования в самых разных целях, возможно, за счет большего выходного файла Мой любимый способ сделать это - преобразовать PDF в ps и обратно. Однако это не всегда работает, но когда он работает, результаты хороши:
ps2pdf input.pdf output.pdf
Это также напрямую работает с pdf, как это предложено в комментариях.
Если у вас есть pdf со сканированными изображениями , вы можете использовать convert
для создания pdf с сжатием jpeg (этот метод можно использовать для любого PDF-файла, но вы потеряете всю текстовую информацию).
Например:
convert -density 200x200 -quality 60 -compress jpeg input.pdf output.pdf
Настройте плотность (например, 100x100) и качество для ваших нужд.
В зависимости от вашего ввода jpeg сжатие может быть не лучшим выбором из-за артефактов сжатия. У вас есть выбор между BZip, Fax, Group4, JPEG, JPEG2000, Lossless, LZW, RLE или Zip в качестве альтернативных методов сжатия (некоторые из них допускают только черно-белые изображения). Подробнее см. здесь .
Мне удалось добиться больших коэффициентов сжатия для отсканированных / сфотографированных документов (в зависимости от настроек). В зависимости от источника документа вы можете уменьшить глубину цвета ( -depth
).
Мне нужно было уменьшить размер PDF, который содержал полноцветные проверки документа. Каждая из моих страниц была полноцветным изображением в отношении файла. Это были изображения страниц, содержащих текст и изображения, но они были созданы путем сканирования на изображение.
Я использовал комбинацию нижеприведенной команды ghostscript и один из другого потока.
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true \
-dColorImageResolution=150 -dNOPAUSE -dBATCH -sOutputFile=output.pdf input.pdf
Это уменьшило разрешение изображения до 150 точек на дюйм, уменьшив размер моего файла пополам. Глядя на документ, практически нет заметной потери качества изображения. Текст по-прежнему прекрасно читается в моем 2012 Nexus7.
Вот сценарий для перезаписи отсканированных PDF-файлов:
#!/bin/sh
gs -q -dNOPAUSE -dBATCH -dSAFER \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.3 \
-dPDFSETTINGS=/screen \
-dEmbedAllFonts=true \
-dSubsetFonts=true \
-dColorImageDownsampleType=/Bicubic \
-dColorImageResolution=72 \
-dGrayImageDownsampleType=/Bicubic \
-dGrayImageResolution=72 \
-dMonoImageDownsampleType=/Bicubic \
-dMonoImageResolution=72 \
-sOutputFile=out.pdf \
$1
Вы можете немного настроить его, чтобы сделать его более многоразовым, но если у вас есть только один PDF-файл, вы можете просто заменить $1
своим файлом в формате pdf и наклеить его на терминал.
Я обычно использую ps2pdf для этого (более простой синтаксис), примерно так:
ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF
Я использую следующий скрипт python, чтобы уменьшить размер всех файлов PDF в каталоге на производственном сервере (8.04). Поэтому он должен работать.
#!/usr/bin/python
import os
for fich in os.listdir('.'):
if fich[-3:]=="pdf":
os.system("ps2pdf -dPDFSETTINGS=/ebook %s reduc/%s" % (fich,fich))
Это будет хорошим результатом.
Лучший для меня был
convert -compress Zip -density 150x150 input.pdf output.pdf
Другие способы:
#### gs
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf $INPUTFILE
### pdf2ps && ps2pdf
pdf2ps input.pdf output.ps && ps2pdf output.ps output.pdf
### Webservice
http://compress.smallpdf.com/de
рассматривает
Я сам столкнулся с этой проблемой. Если вы используете простое сканирование, выберите текстовый режим для сканирования с низким разрешением, и вам не придется беспокоиться о материале командной строки. Просто говорю.
Поскольку эта ссылка была первой для меня, когда я искал в Google, я думал, что добавлю еще одну возможность. Ни одно из вышеперечисленных решений не работало для меня на pdf, экспортированном из Inkscape (15 мб), но я, наконец, смог сократить его до 1 мб, открыв его в GIMP и снова экспортируя в формате pdf.
Другой вариант, который пришел близко (но текст был немного нечетким), был утилитой преобразования ImageMagick:
convert -compress Zip input.pdf output.pdf
В конце я написал свой собственный скрипт bash для его решения, он использует mogrify
, convert
и gs
, чтобы извлечь pdf-страницы в виде png, изменить их размер, преобразовать в 1-бит bmp и затем перестроить их как pdf. Уменьшение размера файла может превышать 90%. Доступно по адресу Ссылка .
Управление качеством сжатия:
#!/bin/sh
INPUT=$1; shift
OUTPUT=$1; shift
GS_BIN=/usr/bin/gs
QFACTOR="0.40"
# Image Compression Quality
#
# Quality HSamples VSamples QFactor
# Minimum [2 1 1 2] [2 1 1 2] 2.40
# Low [2 1 1 2] [2 1 1 2] 1.30
# Medium [2 1 1 2] [2 1 1 2] 0.76
# High [1 1 1 1] [1 1 1 1] 0.40
# Maximum [1 1 1 1] [1 1 1 1] 0.15
${GS_BIN} -dBATCH -dSAFER -DNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=${OUTPUT} -c "<< /ColorImageDict << /QFactor ${QFACTOR} /Blend 1 /HSample [1 1 1 1] /VSample [1 1 1 1] >> >> setdistillerparams" -f ${INPUT}
Если преобразование в djvu также было бы в порядке, и если никаких цветов не было, вы можете попробовать следующее:
Преобразование PDF в файлы jpg с использованием pdfimages -j
Если вы получаете файлы pbm вместо этого, вы должны сделать промежуточный шаг:
for FILENAME in $(ls *.pbm); do convert $FILENAME ${FILENAME%.*}.jpg ;done
Команда convert из пакета imagemagick.
Затем используйте scantailor , чтобы сделать из него tif.
На последнем шаге вы переходите к сценариям из директории (где расположены tif) и применяйте djvubind к этому каталогу. Р>
Это должно значительно уменьшить размер файла без потери качества текста. Если вы хотите более тонкий контроль над ocr-backend, вы можете попробовать djvubind --no-ocr
и использовать ocrodjvu для добавления ocr-слоя впоследствии.
Если у вас есть цвет в документе, все становится немного сложнее. Вместо djvubind вы можете использовать didjvu , и в scantailor вам нужно перейти в смешанный режим и выбрать иногда цветные изображения вручную.
загрузите изображение или даже файл pdf в файл inkscape. Р>
Из inkscape: Сохранить в векторном формате (как родной .svg).
Импортируйте векторные файлы в scribus, отредактируйте макет и экспортируйте / сохраните как .pdf оттуда
Я столкнулся с той же проблемой и был рад найти эту тему. В частности, у меня был pdf-файл, созданный от отсканированных изображений, и для уменьшения его размера байта в 6 раз.
К сожалению, ни одно из вышеперечисленных решений не работало :( Тогда я понял, что где-то в процессе сканера > jpeg- > pdf размер страницы раздувался в 4 раза. Документы, которые я просматривал были все буквы размера, но в формате pdf был
identify -verbose doc_orig.pdf | grep "Print size"
Print size: 35.4167x48.7222
Наконец-то я получил желаемые результаты с помощью команды «convert», которая сделала как изменение размера, так и шаги сжатия в одном:
convert -density 135x135 -quality 70 -compress jpeg -resize 22.588% doc_orig.pdf doc_lowres.pdf
Обратите внимание, что doc_orig имеет плотность 72x72 dpi.
Векторизация всех шрифтов поможет. Не вставляйте шрифты в файл.
Используйте небольшое разрешение изображения: большую часть времени вы действительно не нуждаетесь в HD-изображениях. Будьте осторожны с программным обеспечением изображения, таким как Gimp, он может сделать очень большой сжатый файл (остерегайтесь, как вы его сжимаете). Я не люблю проприетарное программное обеспечение, но некоторые инструменты сжатия Adobe Photoshop лучше, чем Gimp.
Дополнительно: вам нужно поместить изображение в файл PDF? Р>
Это очень просто, но больше, чем разрешение изображения, вы можете просто изменить размер документа ...
@Lord of Time прав: переход от 72Mo к 500Ko будет тяжелым, не меняя что-то радикально.
Супер простой инструмент для сжатия PDF: Страница GitHub.
Установка на Ubuntu:
sudo add-apt-repository ppa:jfswitz/released
sudo apt-get update
sudo apt-get install pdf-compressor
Он использует ghostscript.
Недавно я обнаружил и настоятельно рекомендую pdfsizeopt . Р>
Он намного эффективнее любого из предыдущих программ CLI и GUI, которые я пробовал (в том числе convert
, gs
, pdftk
и т. д.) - хотя возможно медленнее с pngout
активировано - и делает не имеют некоторых из их проблем (без сильно искаженных / деградированных изображений, без потери закладок и т. д.).
Я рекомендую универсальную установку Unix :
Установите все необходимые зависимости:
Загрузите и установите исполняемый файл:
curl -L -o https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single
cp pdfsizeopt.single /usr/local/bin/pdfsizeopt
Использование:
pdfsizeopt original.pdf [compressed.pdf]
Вы можете попробовать следующее:
$ time pdftk myFile.pdf output myFile__SMALLER.pdf compress
GC Warning: Repeated allocation of very large block (appr. size 16764928):
May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 8384512):
May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 11837440):
May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 8384512):
May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 33525760):
May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 7254016):
May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 34041856):
May lead to memory leak and poor performance.
GC Warning: Repeated allocation of very large block (appr. size 33525760):
May lead to memory leak and poor performance.
real 0m23.677s
user 0m23.142s
sys 0m0.540s
$ du myFile*.pdf
108M myFile.pdf
74M myFile__SMALLER.pdf
Он быстрее, чем gs
, но сжимает до 30% в этом случае для входного файла 107.5MiB.
Я использовал команды ниже, но он существенно не сжимал мой файл PDF. Некоторое время часть части была почернела после сжатия. Р>
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf $INPUTFILE
"ps2pdf -dPDFSETTINGS=/ebook %s %s" % (input_file_path, out_file_path)
После слишком большого блуждания по сети я просто не мог найти нужную библиотеку сжатия. Я столкнулся с pdfcompressor.com
. Это просто потрясающий сайт. Он сжимает pdf на 95% (15 Мбайт файлов). Поэтому я использовал селен и Tor для автоматизации сжатия. Оформить заказ на репозиторий Github.
[GITHUB] ( Ссылка )