PDF的2X2拼接脚本

文章介绍了一个使用Python的PyPDF2库来批量拼接PDF文件的脚本,主要针对开卷考试中需要整合大量PDF资料的情况。脚本以4页为一组,将PDF页面拼接到新页面的四个位置,从而减少打印成本和提高携带便利性。
摘要由CSDN通过智能技术生成

Python的PDF比例拼接脚本

目录

背景

期末临近,我们的一门课程是开卷考试,可比较坑的是这门课打印店完全没有资料,无奈我们只能使用老师发到群里课件当做开卷资料。可最要命的是我在整和删减完老师所有的课件后发现一共有700页PPT!如果不对这些PPT进行拼接的话光是打印费就不菲,而且打完也是老厚一本,不好携带,可我没有WPS的会员,而且在网上也没找到使用wps进行PDF拼接的方法(以2X2或者2X4的形式进行拼接),于是只好自己写个脚本实现。

代码实现

import PyPDF2
A4Wid = 8.27*72
A4Hig = 11.69*72
def merge_pages(pdf_file_path, output_file_path):
    pdf_reader = PyPDF2.PdfFileReader(open(pdf_file_path, 'rb'))
    pdf_writer = PyPDF2.PdfFileWriter()

    num_pages = pdf_reader.numPages
    for start in range(0, num_pages, 4):
        end = min(start + 4, num_pages)
        new_page = pdf_writer.add_blank_page(width=A4Wid*2, height=A4Hig)
        for i, page_num in enumerate(range(start, end)):
            page = pdf_reader.getPage(page_num)
            new_page.mergeTranslatedPage(page, i % 2 * A4Wid, (1 - i // 2) * A4Hig*0.5)
        print('进度:', (page_num * 100.0 / num_pages), '%')

    with open(output_file_path, 'wb') as output_file:
        pdf_writer.write(output_file)

我们使用PyPDF2库函数实现该功能。其中纸张尺寸和每页PDF页数可根据需要修改。首先我们创建PDF文件的读写操作句柄。读取完老的PDF文件后我们获取PDF文件的页数。之后我们以老PDF文件的每4张文件为一个周期,直到遍历完所有的老PDF文件后结束大循环。获取到每个周期的4张PDF后我们再创建新的一页PDF,并将老PDF的4张分别传送到新的一页的四个位置。完成后打印进度。大循环结束后保存新的PDF文件。

效果展示

查看拼接进度:
在这里插入图片描述
结果:
原文件:
在这里插入图片描述
拼接后:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CmosWolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值