Есть ли способ выровнять изображение .pdf из командной строки?

19

В GIMP я могу импортировать .pdf и использовать графический интерфейс, чтобы сгладить его (если он был сделан со многими слоями), выбрав «Свести изображение» в выпадающем меню «Изображение». Затем я могу экспортировать .pdf с новым именем файла.

Я хотел бы автоматизировать это. Есть ли способ сделать это через терминал?

generic_user
источник
1
установите imagemagick и прочитайте man mogrify-im6, montage-im6, display-im6, stream-im6, identifier-im6, import-im6, curure-im6, Composite-im6, convert-im6, animate-im6 и Compare-im6.
PersianGulf

Ответы:

25

Я нашел эти 2 метода через Google, в этой теме под названием: Re: Сглаживание PDF-файлов в командной строке UNIX .

Метод № 1 - использование преобразования Imagemagick:
$ convert orig.pdf flattened.pdf 

ПРИМЕЧАНИЕ. При таком подходе качество считается таким же.

Способ № 2 - Использование pdf2ps -> ps2pdf:
$ pdf2ps orig.pdf - | ps2pdf - flattened.pdf 

ПРИМЕЧАНИЕ. Сообщается, что этот метод сохраняет качество изображения.

SLM
источник
1
Лучшее качество, чем GIMP на втором - спасибо!
generic_user
@ACD - это приятно знать. Рад, что решил вашу Q.
SLM
2
Метод 1 генерировал очень размытое изображение, а метод 2 работал отлично.
Северин Козак
1
К сожалению, метод № 2 не растеризует изображение, поэтому, если вы пытаетесь заблокировать чувствительные части, пользователь все равно может открыть документ и удалить слои (с помощью чего-то вроде Inkscape). Однако вы можете изменить разрешение метода № 1: $ convert -density 150 {original,flattened}.pdf если вам нужно сохранить дисковое пространство, вы можете использовать -type Grayscaleили -monochromeили что-то в этом роде.
Eacousineau
1
Оба метода растеризуют PDF, хотя метод №2 делает это с гораздо более высоким разрешением. Так что ни один из этих методов не удовлетворяет.
Муравей
18

Ghostscript (GS) работал лучше, чем pdf2psи convertдля меня. Качество едва ухудшилось, а размер файла невелик.

gs -dSAFER -dBATCH -dNOPAUSE -dNOCACHE -sDEVICE=pdfwrite \
-sColorConversionStrategy=/LeaveColorUnchanged  \
-dAutoFilterColorImages=true \
-dAutoFilterGrayImages=true \
-dDownsampleMonoImages=true \
-dDownsampleGrayImages=true \
-dDownsampleColorImages=true \
-sOutputFile=document_flat.pdf document_original.pdf

Найдено здесь: http://zeroset.mnim.org/2015/01/07/flatten-pdfs-with-ghostscript/

Стэн Бонди
источник
Этот метод прекрасно работает, PDF не растеризован и текст сохраняется как текст
Ant
2
Я попытался использовать это, чтобы удалить прозрачный слой с помощью выравнивания, но у меня это не сработало.
mikemtnbikes
Это изменило шрифт для меня, но в остальном намного лучшее разрешение, чем другие предложенные методы.
Ste
1

Несмотря на то, что конвертирование сохранит тот же размер файла, я обнаружил, что он медленный.

Метод pdf2ps ps2pdf работает быстрее, но я заметил, что он увеличивает размер файла.

pdftk хорош, потому что он не только быстрый, но и сохраняет схожий размер файла.

Это то, что я использую, чтобы выровнять каталог.

    function pdfflatten () {
        pdftk "$1" output "$2" flatten
    }
    export pdfflatten
    alias pdfflattenDIR='mkdir flattenedPDFs; for i in `seq $(ls *.pdf | wc -l)`; do a=`ls *.pdf | head -$i | tail -1`; pdfflatten "$a" flattenedPDFs/"$a"; done'
Jgar
источник
pdftk flatten не изменяет изображения в PDF. Из документов он «объединяет поля интерактивной формы входного PDF (и их данные) со страницами PDF»
Эйдан Кейн,
1
Чтобы быть понятным, этот подход не выравнивает прозрачные слои (как указано выше).
mikemtnbikes