使用 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()
我有大约 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()