✅ 输入:左右并排的 PDF(一页 = 左页 + 右页)
✅ 输出:单页 PDF(左页、右页各一页)
✅ 跳过:第 1 页,最后 1 页
✅ 保持原始页面比例、分辨率
pip install pypdf
python
from pypdf import PdfReader, PdfWriter
from copy import deepcopy
from tqdm import tqdm
def split_left_right_pdf(
input_pdf: str,
output_pdf: str,
skip_first: bool = True,
skip_last: bool = True,
):
reader = PdfReader(input_pdf)
writer = PdfWriter()
total_pages = len(reader.pages)
for i in tqdm(range(0, total_pages), total=total_pages):
page = reader.pages[i]
if skip_first and i == 0:
writer.add_page(page)
continue
if skip_last and i == total_pages - 1:
writer.add_page(page)
continue
media_box = page.mediabox
width = float(media_box.width)
height = float(media_box.height)
half_width = width / 2
# 左页
left_page = deepcopy(page)
left_page.mediabox.lower_left = (0, 0)
left_page.mediabox.upper_right = (half_width, height)
writer.add_page(left_page)
# 右页
right_page = deepcopy(page)
right_page.mediabox.lower_left = (half_width, 0)
right_page.mediabox.upper_right = (width, height)
writer.add_page(right_page)
with open(output_pdf, "wb") as f:
writer.write(f)
if __name__ == "__main__":
split_left_right_pdf(
input_pdf=r"科学智能白皮书2025.pdf",
output_pdf=r"科学智能白皮书2025-single.pdf",
skip_first=True,
skip_last=True,
)