Як витягнути та / або видалити останню сторінку з купки PDF-файлів?


14

Один з наших постачальників почав чіпляти надмірно величезне зображення до останньої сторінки PDF-файлів, яку ми отримуємо від них. Мені потрібно це виправити. Однак у нас їх сотні, тому забороняється заходити вручну. Які найкращі способи вилучити та видалити (Переважно перший, а потім другий; мені все одно потрібно підтвердити через розмір файлів, що я не видаляю ту, яка не має зображення) останню сторінку PDF автоматично? ОС - Linux.

Я можу витягнути його за допомогою ghostscript з деяким порядком, gs -dFirstPage=5 -dLastPage=5але мені потрібно автоматизувати це, я не можу пройти і вручну дізнатися, яке число останньої сторінки.

Будь-які ідеї?

Редагувати: Щоб уточнити, я просто хочу розділити / видалити останню сторінку. Не зображення в ньому, акциз на останній сторінці сторінки.


1
Подивіться pdftk- я впевнений, що можна загалом працювати над цим завданням.
Даніель Андерссон


2
Не віддалено дублікат цього.
Андрій

Мені здається, що я повинен уточнити: мені не цікаво видаляти зображення на останній сторінці. Мені цікаво видалити останню сторінку, період.
Андрій

1
Питання, пов'язані з кількома різними відповідями на Ask Ubuntu: askubuntu.com/questions/221962/…
TuringTux

Відповіді:


2

Як @Daniel Andersson вже коментував, це можна легко зробити за допомогою pdftk:

pdftk input.pdf cat end-1 output temp.pdf
pdftk temp.pdf  cat end-2 output output.pdf
rm temp.pdf

Я не знаю, чи можна це зробити за допомогою одного дзвінка на pdftk, хоча ...

Редагувати : ви можете поєднати його з відповіддю таноска та використовувати (в баші):

pdftk input.pdf cat 1-$((last-1)) output output.pdf

коли ви вже вилучили останню сторінку до змінної $last.


Приклад не працює. Знайшов відповідь @Sid Steward, щоб краще працювати.
Редіо

14

Для подальшого вдосконалення відповіді на @ eldering у pdftk версії 1.45 і пізніших є засоби для перенаправлення сторінок у зворотному порядку, попередньо додавши малі літери r до номера сторінки. Кінцева сторінка у форматі PDF - r1, наступна - остання - r2 тощо.

Наприклад, один виклик pdftk:

pdftk input.pdf cat 1-r2 output output.pdf

випаде кінцева сторінка з input.pdf - вхід повинен бути не менше двох сторінок.

Щоб витягти лише останню сторінку PDF-документа, щоб перевірити його розмір файлів, запустіть:

pdftk input.pdf cat r1 output final_page.pdf

Pdftk доступний у Linux. У багатьох дистрибутивах є двійковий код, який ви можете встановити. Однак ви повинні переконатися, що це версія 1.45 або новіша версія. Якщо ні, ви можете створити pdftk з вихідного коду.


rN-річ саме те, що мені було потрібно, тому що моя система генерування файлів pdf на основі латексу завжди створювала порожні сторінки на початку та майже в кінці документа, мені довелося їх видаляти вручну в кінці. Тепер я просто закликаю: pdftk A = pocket20.pdf cat A3-r6 r3-end output pocket_to_print.pdf, який видаляє перші дві та 4-ту, 5-ту останню сторінки.
Мартін Т.

1

pdfinfo надасть вам розмір фактичного файлу pdf, а pdfimages додасть вам індекс зображень у вказаному файлі pdf. Так ви можете написати сценарій у формі

#!/bin/bash
for i in *.pdf
do
        j=$(pdfinfo "$i" |awk '/^Pages/ { print $2}')
        pdfimages -list -p -f "$j" "$i"
done

що має повернутися, якщо певний файл має зображення на останній сторінці. Якщо це так, то ви можете робити будь-які маніпуляції, які вам потрібно зробити.


0

Ось рішення з використанням pdfjam замість pdftk:

#!/bin/sh
fname=`basename $1`
pdfjam $1 1-$((`pdfinfo $1 | grep Pages | grep -shoPe '\d+'` - ${2:-1})) -o ${fname%.*}-trimmed.pdf

Де перший аргумент - це файл для обрізки, а другий аргумент - кількість сторінок для обрізки (за замовчуванням до 1).


0

Рішенням одного вкладиша було б користуватися findразом pdftk:

find . -name "*.pdf" -exec pdftk {} cat 1-r2 output cut/{} \;

ПРИМІТКА . Обрізані файли зберігаються в цьому прикладі у підкаталозі, який називається cutдля збереження вихідного імені файлу, оскільки pdftkне дозволяє перезаписувати вхідні файли.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.