Инструмент командной строки для обрезки файлов PDF
Я ищу инструмент командной строки с открытым исходным кодом, чтобы обрезать PDF-файл, как мы можем сделать в Adobe Acrobat Pro. Я пробовал PdfTk, ImageMagick, PyPDF и GhostScript - пока безуспешно.
11 ответов
Я бы посоветовал вам взглянуть на 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
,
Спасибо за Rasmus, вы можете установить pdfcrop из пакета texlive-extra-utils:
sudo apt-get install texlive-extra-utils
Затем обрежьте pdf файлы, используя команду pdf crop:
pdfcrop input.pdf output.pdf
использование --help
чтобы увидеть более удивительные параметры, такие как --margins
pdfcrop --margins 5 input.pdf output.pdf
какой урожай PDF с 5 б.п. с каждой стороны страницы
Вы также можете обрезать PDF-файлы, просто используя Ghostscript. Я написал небольшой скрипт для упрощения процесса (вдохновленный этим ответом):
#!/bin/bash
if [ $# -lt 5 ]
then
echo "Usage: `basename $0` <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. Например, здесь я определяю минимальные координаты для х / у (значения в верхнем левом углу):
Теперь максимальные координаты:
И наконец, я запускаю скрипт pdf_crop_by_coordinates.sh test.pdf 45 429 38 419
производя test_cropped.pdf
который выглядит так:
Я понятия не имею, как решение Ghostscript сравнивается с pdfcrop
с точки зрения качества и правильности.
Когда я не могу что-то сделать с pdftk, следующим местом, куда я обращаюсь, является PDFjam, который представляет собой оболочку командной строки для пакета LaTeX pdfpages (следовательно, вам также нужно это и установленный дистрибутив TeX). Для получения справки о том, как его использовать, я рекомендую обычный экран справки:
pdfjam --help
поскольку страница руководства редкая, а веб-страница концентрируется на примерах.
Чтобы обрезать PDF, вам нужна следующая команда:
pdfjam --keepinfo --trim "10mm 15mm 10mm 15mm" --clip true --suffix "cropped" input.pdf
Это выведет файл с именем input-cropped.pdf
, Порядок обрезки должен быть слева, снизу, справа, сверху, согласно \includegraphics
из графика.
Чтобы дать представление о том, как он сравнивается с PDFcrop, у меня недавно была причина вырезать довольно модный PDF. Мой оригинал был 675 КБ, моя обрезанная версия через PDFjam была 1,2 МБ, а версия, обрезанная через PDFcrop, была 4,5 МБ. В то время как PDFjam и PDFcrop удаляли встроенные гиперссылки и закладки, PDFjam с --keepinfo
В опции сохранены свойства документа (например, заголовок, автор, тема).
Программа pdfCropMargins - это приложение командной строки, которое автоматически обрезает поля PDF-файлов.
Эта программа зависит либо от программы Ghostscript, либо от программы pdftoppm, устанавливаемой (и доступной) в системе. И проанализируйте изображения страниц с помощью PIL, чтобы найти ограничивающие рамки, используя порог 191.
установить с помощью
pip install pdfCropMargins
Запустить с помощью
pdf-crop-margins -v -s -u your-file.pdf
За помощью
pdf-crop-margins -h | Больше
Если графический инструмент тоже подойдет, я бы порекомендовал krop
: http://arminstraub.com/software/krop
Это может помочь вам.
Это соответствует более новой версии Ubuntu и жизни. Это мастер PDF Editor. Вы можете использовать его, обрезать, добавлять некоторые вещи и т. Д.
Пример:
Это раньше Это после Ctrl + K
Вы можете использовать скрипт pypdf с этой страницы. Но в ответе на этот вопрос об обмене стеками, похоже, есть и много вариантов.
Используя pdfjam , вы можете установить любую опцию, которая изначально исходит из пакета pdfpages , и поэтому вы можете установить
У меня был случай объединить несколько JPG в PDF, а также добавить метаданные и обрезать их до входящего размера jpg. Это будет работать для одинаковых размеров входных JPG, которые будут хорошо обрезаны и не будут иметь белых полей:
# equal sizes of input images
pdfjam Image_00001.jpg Image_00002.jpg Image_00003.jpg Image_00004.jpg Image_00005.jpg \
--pdftitle 'My custom title' \
--pdfsubject 'My custom subject' \
--pdfkeywords 'keyword1; keyword2; keyword3; aso;' \
--pdfauthor 'author1; author2;' \
--fitpaper true --outfile 'Images_Combined.pdf'
pdfinfo 'Images_Combined.pdf' # testing results for meta data
# Title: My custom title
# Subject: My custom subject
# Keywords: keyword1; keyword2; keyword3; aso;
# Author: author1; author2;
# Creator: LaTeX with hyperref
# Producer: pdfTeX-1.40.22
# CreationDate: Sun May 1 15:03:01 2022 CEST
# ModDate: Sun May 1 15:03:01 2022 CEST
# …
Примечание. Если у вас разные размеры исходного файла JPG, он будет соответствовать размеру бумаги первому и масштабировать все оставшиеся объединяемые страницы до размера первого, поэтому на некоторых страницах не будет белых полей, а на некоторых будут.
Редактировать: это было сделано из TeX Live 2021 с помощью