Инструмент командной строки для обрезки файлов PDF

Я ищу инструмент командной строки с открытым исходным кодом для обрезки PDF-файла, как мы можем это сделать в Adobe Acrobat Pro. Я пробовал PdfTk, ImageMagick, PyPDF и GhostScript - пока безуспешно.

93
задан 10.01.2020, 05:28

9 ответов

Брисс не является командной строкой, но стоит посмотреть.

0
ответ дан 10.01.2020, 05:29

Вы можете использовать скрипт pypdf с этой страницы . Но в ответе на на этот вопрос об обмене стеками , похоже, есть и много вариантов.

0
ответ дан 10.01.2020, 05:30
  • 1
    Я не в состоянии получить, каковы левые верхние правые нижние параметры. они, указывает, медленно двигается, сантиметры? – user2925795 10.01.2020, 05:30
  • 2
    @Rakesh: См. мой ответ для объяснения параметров и как определить их легко. – Anil Chahal 10.01.2020, 05:31

Это может помочь тебе.
Это соответствует более новой версии Ubuntu и жизни. Это Master PDF Editor . Вы можете использовать его, обрезать, добавлять некоторые вещи и т. Д.

Пример:
Это до This is before Это после ctrl + k enter image description here

0
ответ дан 10.01.2020, 05:30

Если графический инструмент также подходит, я бы порекомендовал krop: http://arminstraub.com/software/krop

0
ответ дан 10.01.2020, 05:31

Вы также можете обрезать PDF-файлы, просто используя Ghostscript. Я написал небольшой скрипт для упрощения процесса (вдохновленный этим ответом ):

#!/bin/bash

if [ $# -lt 5 ]
then
  echo "Usage: `basename [110]` <pdf-file> <x_min> <x_max> <y_min> <y_max>"
  echo "Notes:"
  echo " - all coordinates are absolute; no calculation of width/height necessary"
  echo " - use 'gv' to determine the coordinates"
  exit 65
fi

file="$1"
xmin="$2"
xmax="$3"
ymin="$4"
ymax="$5"

base="${file%.*}"
outfile="${base}_cropped.pdf"

echo "writing to: $outfile"

gs \
  -o $outfile \
  -sDEVICE=pdfwrite \
  -c "[/CropBox [$xmin $ymin $xmax $ymax] /PAGES pdfmark" \
  -f $file

Чтобы определить координаты обрезки, я использую gv, который печатает координаты курсора мыши в тех же единицах, что и в Ghostscript. Например, здесь я определяю минимальные координаты для x / y (значения в верхнем левом углу):

crop1

Теперь максимальные координаты:

[ 1113] crop2

И, наконец, я запускаю скрипт pdf_crop_by_coordinates.sh test.pdf 45 429 38 419, производящий test_cropped.pdf, который выглядит так:

result

[ 1116] Я понятия не имею, как решение Ghostscript сравнивается с pdfcrop с точки зрения качества и правильности.

0
ответ дан 10.01.2020, 05:31

Спасибо за Rasmus, вы можете установить pdfcrop из пакета texlive-extra-utils:

sudo apt-get install texlive-extra-utils

Затем обрезать pdf файлы с помощью команды pdf crop:

pdfcrop input.pdf output.pdf

использовать [113 ] чтобы увидеть более удивительные параметры, такие как --margins

pdfcrop --margins 5 input.pdf output.pdf

, которые обрезают pdf по 5 б.п. с каждой стороны страницы

0
ответ дан 10.01.2020, 05:32

Когда я не могу что-то сделать с pdftk, следующим местом, куда я обращаюсь, является PDFjam , который является оболочкой командной строки для пакета pdfpages LaTeX (следовательно, вам также необходимо это и TeX дистрибутив установлен). Для получения справки о том, как его использовать, я рекомендую обычный экран справки:

pdfjam --help

, поскольку справочная страница редкая, а веб-страница сосредоточена на примерах.

Чтобы обрезать PDF, вам понадобится следующая команда:

pdfjam --keepinfo --trim "10mm 15mm 10mm 15mm" --clip true --suffix "cropped" input.pdf

В результате вы получите файл с именем input-cropped.pdf. Порядок обрезок должен быть левым, нижним, правым, верхним, как указано в \includegraphics из graphicx .

Чтобы дать представление о том, как он сравнивается с PDFcrop, у меня была причина, чтобы обрезать довольно модный PDF недавно. Мой оригинал был 675 КБ, моя обрезанная версия через PDFjam была 1,2 МБ, а версия, обрезанная через PDFcrop, была 4,5 МБ. В то время как PDFjam и PDFcrop удаляли встроенные гиперссылки и закладки, PDFjam с опцией --keepinfo сохранял свойства документа (например, заголовок, автор, тема).

0
ответ дан 10.01.2020, 05:32
  • 1
    Примечание: это действительно не удаляет содержание, которое становится внеэкранным от PDF, только скрывает его. То же как, что @init_js комментирует в выигранном за вершину ответе. – Om Prakash Sao 10.01.2020, 05:33

Программа pdfCropMargins представляет собой приложение командной строки для автоматического обрезания полей PDF-файлов.

Эта программа зависит либо от программы Ghostscript, либо от программы pdftoppm, устанавливаемой (и доступной) в системе. И проанализируйте изображения страниц с помощью PIL, чтобы найти ограничивающие рамки, используя порог 191.

установите с помощью

pip install pdfCropMargins

Запустите с помощью [ 115]

pdf-crop-margins -v -s -u your-file.pdf

Для помощи

pdf-crop-margins -h | больше

0
ответ дан 10.01.2020, 05:33

Я бы посоветовал вам взглянуть на PDFcrop .

Если вы хотите обрезать PDF с левым, верхним, правым и нижним полями 5, 10, 20 и 30 пунктов (точек), то запустите

pdfcrop --margins '5 10 20 30' input.pdf output.pdf

в терминале. Чтобы фактически обрезать что-то, используйте отрицательные значения в аргументе для обрезки. Например,

pdfcrop --margins '-50 -50 -50 -50' input.pdf output.pdf

обрезает 50 пунктов слева, сверху, справа, снизу (в этом порядке).

Если вы выполните только команду pdfcrop input, она выведет файл с именем input-crop.pdf с нулевыми полями. Я нахожу это очень удобным, когда включаю PDF-иллюстрации в документы.

Обрезка нескольких файлов

К сожалению, pdfcrop не может обрезать несколько файлов одновременно. Однако легко написать скрипт, который будет обрезать все PDF-файлы в папке, в которой находится скрипт.

Создайте новый пустой файл и назовите его something.sh. Откройте его в текстовом редакторе и вставьте следующее:

#!/bin/bash
for FILE in ./*.pdf; do
  pdfcrop "${FILE}"
done

Сохраните его и закройте. Затем щелкните файл правой кнопкой мыши, перейдите в Свойства> Разрешения и установите флажок Разрешить выполнение файла как программы . Теперь закройте диалог. Запустите скрипт, дважды щелкнув его и выбрав Запустить в терминале . И новая, обрезанная с нулевым полем версия всех PDF-файлов с суффиксом -crop теперь будет напечатана в папке. Если вам нужны поля или другие вещи, вы, конечно, можете просто открыть скрипт и добавить аргументы после pdfcrop.

0
ответ дан 10.01.2020, 05:34
  • 1
    Обратите внимание, что вместо того, чтобы определить отрицательные поля, можно также использовать --bbox "<left> <bottom> <right> <top>". Это позволяет использовать подход для определения области обрезки, описанной в моем ответ ниже . – Abhishek Anand 10.01.2020, 05:34
  • 2
    Существует ли возможность сообщения номера страницы (который должен быть обрезан)? – Erik 10.01.2020, 05:34
  • 3
    Как очарование! даже с полями PDF необходим! – Scott Stensland 10.01.2020, 05:34
  • 4
    Я боюсь it' s все или ничего. pdfcrop --help списки доступные параметры. Я не вижу ничего там, которое позволило бы определять диапазон страниц. – Aayush Pathak 10.01.2020, 05:35
  • 5
    Сравнение размера PDFCrop' s вывод к его входу, выглядит, как будто pdfcrop только изменяет ограничительные рамки. Это doesn' t удаляют данные. Таким образом, этот подход был бы неподходящим, чтобы сделать PDF меньшим, или скрыть информацию. – Brandon Bertelsen 10.01.2020, 05:35

Теги

Похожие вопросы