Удаление последней страницы PDF с использованием Python или Bash

У меня есть около 500 PDF-файлов, в которых последняя страница не требуется. Могу ли я написать скрипт, используя любой инструмент, использующий командную строку, который может перебрать все файлы, удалить последнюю страницу и сохранить новый файл?

Я исследовал в Интернете, и pdftk был наиболее жизнеспособным вариантом, но он больше не работает в Ubuntu.

Помощь будет оценена.

Спасибо

3 ответа

Решение

Ты можешь использовать pdfinfo для того, чтобы получить количество страниц из PDF и ghostscript удалить последний:

#!/bin/bash

for file in *.pdf
do
    page_nb=$(pdfinfo $file | awk '/^Pages/ { print $2 }')

    file_name=$(echo $file | cut -d'.' -f 1)

    gs -sDEVICE=pdfwrite -dNOPAUSE -dQUIET -dBATCH -dFirstPage=1 -dLastPage=$(expr $page_nb - 1) -sOutputFile=$file_name"_without_last_page.pdf" $file
done

Я использовал PyPDF2 и использовал следующий код. Мне удалось удалить все страницы, которые мне не нужны.

import PyPDF2 as pdf

pdf_file = open('361.pdf','rb')
read_file = pdf.PdfFileReader(pdf_file) #the file object that has been read

num_pages = read_file.numPages

wrote_pdf = pdf.PdfFileWriter() #the file object which is to be written

for pageNum in range(2,num_pages-1):
    pageObj = read_file.getPage(pageNum)
    wrote_pdf.addPage(pageObj)

output_pdf = open('361edited.pdf','wb')

wrote_pdf.write(output_pdf)
output_pdf.close()
pdf_file.close()

Конечно, вы можете сделать это с PyPDF2. Прочитайте все страницы, затем запишите каждую страницу минус последнюю (используя цикл for или что-то подобное)

Другие вопросы по тегам