Python一鍵刪除PDF任意頁:輸入頁碼秒出干凈文件——再也不用在線裁剪排隊
PDF刪頁, 零依賴腳本, 命令行秒用, 小白神器, 瑞士軍刀
故事開場:一把瑞士軍刀救了你
周一早高峰,老板發來 200 頁 PDF:
“把第 18、25、37 頁刪掉,10 分鐘后開會!”
你打開瀏覽器找在線工具——排隊 20 人,上傳 80 MB,還提示“會員專享”。
這時,你從 U 盤掏出“小白瑞士軍刀”——main.py。
雙擊運行,按提示輸入:
What is the file that you would like to modify?
>>> report.pdf
How many pages do you need to delete?
>>> 3
Enter the page numbers…
>>> 18 25 37
30 秒后,output.pdf 躺在桌面,只剩 197 頁。
老板驚呼:“效率真高!”
痛點解決:再也不用在線排隊、上傳下載,本地 30 秒搞定。
完整代碼(≤1000字符,直接展示)
from PyPDF2 import PdfFileWriter, PdfFileReaderprint("請輸入要處理的 PDF 路徑:")
file = input()
pdf_in = PdfFileReader(file)print("要刪除幾頁?")
n = int(input())
pages_to_delete = []
print("請輸入頁碼(每行一個):")
for _ in range(n):pages_to_delete.append(int(input()) - 1) # 頁碼從 0 開始pdf_out = PdfFileWriter()
for i in range(pdf_in.getNumPages()):if i not in pages_to_delete:pdf_out.addPage(pdf_in.getPage(i))with open('output.pdf', 'wb') as f:pdf_out.write(f)
print("完成!已生成 output.pdf")
代碼解析
功能塊 1:讀取 PDF
PdfFileReader 把整本 PDF 加載到內存,后續操作零延遲。
pdf_in = PdfFileReader(file)
功能塊 2:交互收集頁碼
用 input() 逐行收集用戶想刪的頁碼,減 1 轉成 0 基索引,小白不會輸錯。
pages_to_delete.append(int(input()) - 1)
功能塊 3:循環保留頁面
遍歷所有頁碼,不在刪除列表就加入新 PDF,順序不變。
for i in range(pdf_in.getNumPages()):if i not in pages_to_delete:pdf_out.addPage(pdf_in.getPage(i))
如果還想更厲害
擴展點子 1:命令行參數
加 -f report.pdf -p 18 25 37 -o cleaned.pdf,一行搞定。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--file', required=True)
parser.add_argument('-p', '--pages', nargs='+', type=int)
parser.add_argument('-o', '--output', default='output.pdf')
args = parser.parse_args()
擴展點子 2:圖形界面
用 tkinter 拖文件選頁碼,按鈕一鍵刪除。
import tkinter.filedialog as fd
file = fd.askopenfilename(filetypes=[("PDF", "*.pdf")])
# 復用上面頁碼列表邏輯
總結
main.py 這把 20 行瑞士軍刀,把“上傳→排隊→下載”三步壓縮成“輸入頁碼+回車”。
你無需安裝任何大型軟件,就能把 PDF 任意頁秒刪,順序不亂。
再加兩行參數或 GUI,它就從腳本升級成批量神器。
下次再遇“刪兩頁”需求,直接跑腳本,30 秒收工!
源碼獲取
完整代碼已開源,包含詳細的注釋文檔:
🔗 [GitCode倉庫] https://gitcode.com/laonong-1024/python-automation-scripts
📥 [備用下載] https://pan.quark.cn/s/654cf649e5a6 提取碼:f5VG