Я шукаю інструмент командного рядка з відкритим кодом, щоб обрізати файл PDF, як ми можемо зробити в Adobe Acrobat Pro. Я спробував PdfTk, ImageMagick, PyPDF та GhostScript - все це поки що не має успіху.
Я шукаю інструмент командного рядка з відкритим кодом, щоб обрізати файл PDF, як ми можемо зробити в Adobe Acrobat Pro. Я спробував PdfTk, ImageMagick, PyPDF та GhostScript - все це поки що не має успіху.
Відповіді:
Я б запропонував вам поглянути на 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 не може обрізати кілька файлів одночасно. Однак легко написати сценарій, який буде обрізати всі pdfs у папці, в якій знаходиться сценарій.
Створіть новий порожній файл та зателефонуйте до нього something.sh
. Відкрийте його за допомогою текстового редактора та вставте наступне:
#!/bin/bash
for FILE in ./*.pdf; do
pdfcrop "${FILE}"
done
Збережіть і закрийте. Потім клацніть правою кнопкою миші файл, перейдіть до Властивості> Дозволи та перевірте поле Дозволити виконання файлу як програми . Тепер закрийте діалогове вікно. Запустіть сценарій, двічі клацнувши по ньому та вибравши Запустити в терміналі . І нова, обрізана з нульовим запасом версія всіх pdfs із суфіксом -кроп тепер буде надрукована у папці. Якщо вам потрібні поля або інші речі, ви, звичайно, можете просто відкрити сценарій і додати аргументи після pdfcrop
.
--bbox "<left> <bottom> <right> <top>"
. Це дозволяє використовувати підхід для визначення площі врожаю, описаного в моїй відповіді нижче .
pdfcrop --help
перелічує доступні варіанти. Я не бачу там нічого, що дозволило б вказати діапазон сторінок.
Дякуємо за 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 bp з кожного боку сторінки
gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdf
згодом, що виправило розмір файлу.
Ви також можете обрізати файли 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. Наприклад, тут я визначаю мінімальні координати для x / y (значення у верхньому лівому куті):
Тепер максимальні координати:
І нарешті, я запускаю сценарій, 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
можливістю збереження властивостей документа (наприклад, заголовок, автор, тема).
Якщо графічний інструмент також добре, я рекомендую krop
: http://arminstraub.com/software/krop
Це може вам допомогти.
Це відповідає новій версії Ubuntu та life. Це головний редактор PDF . Ви можете використовувати його для обрізання, додати деякі речі тощо.
Ви можете використовувати скрипт pypdf з цієї сторінки . Але у відповіді на це запитання щодо обміну статками , здається, існує також багато варіантів.
Програма pdfCropMargins - це програма командного рядка для автоматичного обрізання поля PDF-файлів.
Ця програма залежить або від програми Ghostscript, або від програми pdftoppm, яка встановлюється (і розміщується) в системі. І проаналізуйте зображення сторінки за допомогою PIL, щоб знайти обмежувальні поля, використовуючи поріг 191.
встановити за допомогою
pip встановити pdfCropMargins
Запустити за допомогою
pdf-crop-margins -v -s -u your-file.pdf
Для допомоги
pdf-crop-margins -h | більше