Один из наших поставщиков начал прикреплять ненужное огромное изображение к последней странице PDF-файлов, которую мы получаем от них. Мне нужно обрезать это. Однако у нас их сотни, поэтому входить вручную запрещено. Каковы наилучшие способы извлечения, а затем удаления (желательно сначала одного, а затем другого; мне все еще нужно подтвердить с помощью размера файла, что я не удаляю тот, у которого нет изображения), последней страницы PDF автоматически? ОС это Linux.
Я могу извлечь его, используя ghostscript, с чем-то вроде этого gs -dFirstPage=5 -dLastPage=5
, но мне нужно автоматизировать это, я не могу пройти и вручную узнать, какой номер последней страницы.
Есть идеи?
Изменить: чтобы уточнить, я просто хочу разделить / удалить последнюю страницу. Не изображение в нем, акцизный период последней страницы.
pdftk
- я уверен, что это можно сделать, чтобы работать в целом для такого рода задач.Ответы:
Как уже заметил @Daniel Andersson, это легко сделать с помощью
pdftk
:Я не знаю, можно ли это сделать одним вызовом pdftk, хотя ...
Изменить : вы можете объединить его с ответом и использовать таноска (в Bash):
когда вы уже извлекли последнюю страницу в переменную
$last
.источник
Чтобы еще больше улучшить ответ @ eldering, в pdftk версии 1.45 и выше есть возможность ссылаться на страницы в обратном порядке, добавляя строчную букву r к номеру страницы. Последняя страница в PDF - это r1, предпоследняя страница - это r2 и т. Д.
Например, единственный вызов pdftk:
удалит последнюю страницу из input.pdf - длина входного файла должна быть не менее двух.
Чтобы извлечь только последнюю страницу PDF-файла и проверить его размер, запустите:
Pdftk доступен в Linux. Многие дистрибутивы имеют бинарный файл, который вы можете установить. Вы должны убедиться, что это версия 1.45 или более поздняя. Если нет, вы можете собрать pdftk из исходного кода.
источник
pdfinfo предоставит вам размер фактического pdf-файла, а pdfimages даст вам индекс изображений в указанном pdf-файле. Таким образом, вы можете написать сценарий в виде
это должно возвратиться, если у определенного файла есть изображение на последней странице. Если это так, то вы можете делать любые манипуляции, которые вам нужны.
источник
Вот решение, использующее pdfjam вместо pdftk:
Где первый аргумент - это файл для обрезки, а второй аргумент - количество страниц для обрезки (по умолчанию 1).
источник
Одно линейное решение было бы использовать
find
вместе сpdftk
:ПРИМЕЧАНИЕ : обрезанные файлы хранятся в этом примере в подкаталоге,
cut
которыйpdftk
вызывается для сохранения исходного имени файла, поскольку не позволяет перезаписывать входные файлы.источник