使用 Python 或 Bash 删除 PDF 的最后一页

Removing last page of PDF using Python or Bash

我有大约 500 个 PDF,其中最后一页不是必需的。我可以使用任何使用命令行的工具编写脚本,该脚本可以遍历所有文件,删除最后一页并保存新文件吗?

我在互联网上进行了研究,pdftk 是最可行的选择,但它在 Ubuntu 中不再有效。

帮助将不胜感激。

谢谢

你当然可以用 PyPDF2 做到这一点。读入所有页面然后写出每一页减去最后一页(使用 for 循环或类似的东西)

您可以使用 pdfinfo 从 pdf 中获取页数,并使用 ghostscript 删除最后一页:

#!/bin/bash

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

    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()