import sys from pypdf import PdfReader, PdfWriter def crop_pdf(input_pdf, output_pdf): reader = PdfReader(input_pdf) writer = PdfWriter() # PDF 的排版單位是「點 (points)」,不是 mm。 # 轉換公式:1 英吋 = 25.4 mm = 72 points # e.g. 1 mm ≈ 2.8346 points -> 5 mm ≈ 14.173 points crop_points = 18 for i, page in enumerate(reader.pages): # 注意:程式的頁碼 index 從 0 開始 (0 是第一頁,單數頁) if i % 2 == 0: # 單數頁:裁掉左邊 5mm (將左下角的 X 座標往右移) new_x = page.cropbox.lower_left[0] + crop_points page.cropbox.lower_left = (new_x, page.cropbox.lower_left[1]) else: # 雙數頁:裁掉右邊 5mm (將右上角的 X 座標往左移) new_x = page.cropbox.upper_right[0] - crop_points page.cropbox.upper_right = (new_x, page.cropbox.upper_right[1]) writer.add_page(page) # 輸出成新的 PDF with open(output_pdf, "wb") as out_file: writer.write(out_file) if __name__ == "__main__": if len(sys.argv) != 3: print("用法: python3 crop.py ") else: crop_pdf(sys.argv[1], sys.argv[2]) print("✅ 自動裁切PDF完成!")