Вопрос: Как уменьшить размер файла отсканированного PDF-файла?


У меня есть файл в формате 72.9MB, который мне нужно сжать до 500KB.

Файл был образ JPEG, который я просмотрел, а затем преобразован в pdf.


286
2018-03-16 17:12


Источник


это зависит от того, что потребляет пространство ... нужно гораздо больше информации. сжатие пространства изображений может помочь, но если вы пытаетесь использовать большой кучей кучи, это не сработает. серьезно нужна дополнительная информация. - RobotHumans
преобразовать его в DjVu, вместо этого попытаться уменьшить до невозможного размера PDF (согласно источнику) - zetah
файл был образ jpeg, который я просмотрел, а затем преобразован в pdf. - tamimym
Кажется, что это немного облегчает создание файлов, но pdfopt имеет простой синтаксис и улучшает скорость загрузки и перелистывания страниц в эпоху iPad. :-) - Ari B. Friedman
PDF для PS не эффективен в отсканированном PDF-файле, я пытаюсь преобразовать 56 MB pdf в ps-файл, но ps-файл конвертируется в 1,3 ГБ и снова ps2pdf преобразуется в 45-мегабайтный файл


Ответы:


aking1012 прав. С дополнительной информацией о возможных встроенных изображениях, гиперссылках и т. Д. Было бы гораздо легче ответить на этот вопрос!

Вот пара сценариев и решений для командной строки. Используйте, как сочтете нужным.


115
2018-03-16 17:28



Большое спасибо за ваши предложения, оболочка ghostscript работала чудеса и сократила ее до 460 КБ :) - tamimym
Это не обязательно так. Если содержимое перешло от изображения к тексту, это более чем fessible. [Предполагается, что текст четко очерчен] - monksy
Я рекомендую вам скрипт shrinkpdf.sh, вы можете настроить код для использования значения ppi, которое вы хотите (по умолчанию 72), и достичь именно того размера, который вам нужен, чтобы пожертвовать наименьшим качеством. Это позволило мне загрузить сканированный документ объемом 11 МБ с макс. размер 3 МБ без потери качества. - Severo Raz
shrinkpdf отлично работает! - AmanicA
Первая ссылка с настройкой «/ ebook» уменьшила сканированный файл размером 19 МБ до 4,2 МБ, а отсканированный текст остается читаемым. - dremodaris


Используйте следующее Ghostscript команда:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
  • -dPDFSETTINGS=/screen более низкое качество, меньший размер.
  • -dPDFSETTINGS=/ebook для лучшего качества, но немного большего формата pdf.
  • -dPDFSETTINGS=/prepress выход аналогичен настройке Acrobat Distiller «Prepress Optimized»
  • -dPDFSETTINGS=/printer выбирает выход, аналогичный настройке Acrobat Distiller «Оптимизация печати»
  • -dPDFSETTINGS=/default выбирает вывод, предназначенный для использования в самых разных целях, возможно, за счет большего выходного файла

399
2018-02-15 13:53



Можно также сделать скрипт Nautilus для доступа к этой функции для каждого файла. - Sina
Это должен быть принятый ответ. ghostscript - это  PDF, XPS и PS для унификации и могут делать в основном все, обеспечивая лучшее качество ... - dom0
@Sina: На самом деле есть сценарий Nautilus с простым графическим интерфейсом на основе Zenity, который использует эту команду gs со всеми параметрами уровня качества: launchpad.net/compress-pdf - Sadi
Это правильный ответ на этот вопрос (сжимание pdf-файлов, которые в основном являются растровыми данными). Я обнаружил, что screen для меня было слишком низкого качества, но ebook хорошо работает, сокращая PDF-сканер на 33 Мб до 3,6 Мб и сохраняя его очень удобочитаемым. Другие варианты -dPDFSETTINGSопции перечислены здесь: milan.kupcevic.net/ghostscript-ps-pdf, и было бы неплохо включить их в этот ответ. - naught101
gs доступные параметры конфигурации: ghostscript.com/doc/current/Ps2pdf.htm - Antonios Hadjigeorgalis


Мой любимый способ сделать это - преобразовать PDF в ps и обратно. Это не всегда работает, но когда это работает, результаты хороши:

ps2pdf input.pdf output.pdf

Это также напрямую работает с pdf, как это предлагается в комментариях.


118
2018-01-16 09:18



Это очень простой и эффективный способ сделать это. Я был удивлен, увидев, насколько этот метод сжал файлы. Спасибо вам! - Gabriel
Несмотря на то, что этот подход стал моим любимым решением для сжатия pdf-файлов, он разбивает URL-ссылки, которые может иметь документ (что не происходит с подходом @Michael D). Кроме того, удивительность - это все, что я могу придумать для запуска этого фрагмента! (: - Rubens
@Rubens Ах. Не знал о том, что он нарушает ссылки на URL. Спасибо, что добавил. - don.joey
Это обходит защиту паролем ... просто скажите, - jojo
ps2pdf будет принимать pdf-файлы в качестве входных данных, поэтому вы можете сделать это за один шаг: ps2pdf intput.pdf output.pdf - frabjous


Если у тебя есть 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 аргумент).


103
2018-05-19 17:39



Для отсканированного документа, в котором текст интересует вас, а не изображения, и сохранение глубины не является проблемой, jpeg-сжатие не является хорошей идеей, потому что артефакты имеют тенденцию быть чрезвычайно заметными. Если вы используете pdfimages input.pdf pages для извлечения файлов pbm, вы можете сделать что-то вроде: for page in *.pbm; do convert $page -compress Group4 -type bilevel TIFF:- | convert - output.pdf, Любое OCR будет потеряно, поэтому я обычно делаю pdfsandwich output.pdf, что, судя по всему, уменьшает размер файла. - Brian Z
@BrianZ уверен, что сжатие jpeg не всегда является лучшим выбором, но для меня это был лучший подход для документов смешанного типа. Я добавил некоторые сведения о других методах сжатия для ответа. - someonr
Этот метод в конечном счете использует gs за кулисами. - alfC
Мне пришлось использовать двойную тире для параметров для запуска команды --density --quality --compress против -density -quality -compress, - Rotareti
Если qaulity изображения не является наивысшей проблемой (и вы просто хотите, чтобы это прикрепленное письмо электронной почты было достаточно маленьким для отправки), можно добавить -resize 50% тоже, измените процент в зависимости от того, сколько DPI было использовано во время сканирования - chrki


Мне нужно было уменьшить размер PDF, который содержал полноцветные сканирование документа. Каждая из моих страниц была полноцветным изображением в отношении файла. Это были изображения страниц, содержащих текст и изображения, но они были созданы путем сканирования изображения.

Я использовал комбинацию ниже команды ghostscript и один из другого потока.

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true \
-dColorImageResolution=150 -dNOPAUSE  -dBATCH -sOutputFile=output.pdf input.pdf

Это уменьшило разрешение изображения до 150 точек на дюйм, сократив размер файла пополам. Глядя на документ, практически нет заметной потери качества изображения. Текст по-прежнему отлично читается в моем 2012 Nexus7.


29
2018-01-19 06:25



+1 для изображений сэмплирования вниз, но сохранение текста в виде векторов. Сделал огромную разницу в стороне, не изменив мой текст. - Jason O'Neil


Вот сценарий для перезаписи отсканированных 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 и вытащить его в терминал.


24
2017-08-31 20:29



Спасибо, Оли. На данный момент вы почти полностью ответили на все, о чем я просил: -D - Rob Cowell
Это хороший ответ, но в моем случае, по крайней мере, требуется много времени для конвертирования нескольких больших (> 10 Мб) файлов PDF (более минуты). - Gabriel
Я не уверен, что происходит, но 30 МБ PDF дает файл размером 68 МБ. Вместо того, чтобы уменьшать, он увеличивается. Тот же вывод, если используется непосредственно ps2pdf, как указано в следующем ответе. - Ed Villegas
@EdVillegas Единственное, что я могу придумать (объяснить такое увеличение), это то, что изображения имеют более низкое разрешение, чем созданные (72dpi). Или каким-то образом встраивание шрифтов всасывает все шрифты. - Oli♦


Я обычно использую 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))

14
2017-09-01 07:26



Спасибо за альтернативное решение. Сначала я попробовал Оли, и он дал мне результат, который мне нужен, но я буду держать его в будущем. - Rob Cowell
-dPDFSETTINGS = / параметр принтера делает 50% изменение размера. ebook делает изменение на 90%. - neouyghur


  1. я использую LibreOffice Draw для открытия pdf.
  2. Затем я экспортирую в формате pdf
  3. И установите «качество сжатия JPEG» на 50% и «разрешение изображения» на 150 dpi

Это будет хорошим результатом.


13
2018-06-14 09:59



Худшее возможное решение проблемы! Это полностью испортило мой файл! - ThatIs


Лучше всего для меня было

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

С уважением


6
2018-04-21 11:03



хорошее резюме спасибо - Gery
Отличное решение. Легко запомнить, и он принес мой pdf от 32 до 3,5 МБ без разумной потери в удобочитаемости. - Immanuel Weihnachten


Я сам столкнулся с этой проблемой. Если вы используете простое сканирование, выберите текстовый режим для сканирования с низким разрешением, и вам не придется беспокоиться о материале командной строки. Просто говорю.


5
2017-07-29 21:13



Это единственный ответ в этой теме, который решил мою проблему. Я преуменьшил Simplescan, но для меня это был ответ, вместо того, чтобы сражаться с Xsane в бесконечной агонии. - versvs


Поскольку эта ссылка была первой для меня, когда я искал в Google, я думал, что добавлю еще одну возможность. Ни одно из вышеперечисленных решений не работало для меня на pdf, экспортированном из Inkscape (15 мб), но я, наконец, смог сократить его до 1 мб, открыв его в GIMP и снова экспортируя в формате pdf.

Другой вариант, который приблизился (но текст был немного нечетким), был утилитой преобразования ImageMagick:

convert -compress Zip input.pdf output.pdf

3
2018-02-13 12:32



Я думаю, это то, что вы имели в виду под «немного нечетким», но просто для того, чтобы уточнить, convert -compress Zip казалось, растеризуют все векторы. - Sparhawk