使用python完成pdf的一页多分,不再为一页pdf有很多小页而烦恼

目录

1、准备工作

2、应用场景

3、代码实现


1、准备工作

本文使用PyPDF4完成,需要安装相关的库。

2、应用场景

一页PDF含有多页小的PDF规则排列,如这样是4小页同页的PDF:

最后将其分割成4个单独的页面,按顺序放到同一个PDF中。

3、代码实现

以下代码实现将4小页同页的PDF分页:

import PyPDF4

# 打开包含 4 个小页的 pdf 文件
def pdf_divide(input,output):
    with open(input, 'rb') as file:
        reader = PyPDF4.PdfFileReader(file)
        # 获取总页数
        total_pages = reader.getNumPages()
        # 创建一个新的 pdf writer
        writer = PyPDF4.PdfFileWriter()

        # 对每一页执行以下步骤
        for i in range(total_pages):
            # 获取当前页的对象
            page = reader.getPage(i)
            # 将当前页的内容分成4个小页
            for j in range(4):
                # 计算小页的坐标
                x1, y1, x2, y2 = (j % 2) * page.mediaBox.getWidth() / 2, (1 - j // 2) * page.mediaBox.getHeight() / 2, (
                            j % 2 + 1) * page.mediaBox.getWidth() / 2, (2 - j // 2) * page.mediaBox.getHeight() / 2
                
                # 创建一个新的 pdf 页面
                new_page = PyPDF4.pdf.PageObject.createBlankPage(None, x2 - x1, y2 - y1)
                # 将小页的内容复制到新页中
                new_page.mergeTranslatedPage(page, -x1,-y1)
                # 将新页面添加到写入器中
                writer.addPage(new_page)

        # 将所有的小页写入一个新的 pdf 文件
        with open(output, 'wb') as output_file:
            writer.write(output_file)

input = "input.pdf" #输入需要分页的PDF文件地址
output = "output.pdf"   #分页完成后输出地址
pdf_divide(input,output)

猜你喜欢

转载自blog.csdn.net/qq_52529296/article/details/130909673