python PDF合并后大小不一致解决

python PDF合并后大小不一致解决

使用的库是PyPDF2,python3.6

出现此问题的原因:最近在做一个工具有a.pdf和b.pdf两个文件,需要把b.pdf的第三页换成到a.pdf的倒数第五页中,主要的问题是:两个PDF的大小,因为有一个是扫描的,所以不一致,解决代码如下:

 # 打开PDF,创建File对象,还有创建PdfFileReader对象,从打开的PDF中读取数据
                    mbpdf = open(zddmFilepath, 'rb')
                    processpdf = open(processPDF, 'rb')
                    mbpdfReader = PdfFileReader(mbpdf)
                    if mbpdfReader.numPages!=4:
                        err="[%s]的成果签字确认资料页数为[%d]页,应该为4页" %(zddmname,mbpdfReader.numPages)
                        return
                    processpdfReader = PdfFileReader(processpdf)
                    # PdfFileWriter对象,表示一个空白的PDF文档,可以往里面写数据  把processpdf的倒数第五页替换为mbpdf的第三页
                    pdfWriter = PdfFileWriter()
                    layout=pdfWriter.getPageLayout()
                    for pageNum in range(processpdfReader.numPages):
                        if pageNum == processpdfReader.numPages - 5:
                            #获取页面大小
                            indexPage=processpdfReader.getPage(pageNum)
                            sze=getPageSize(indexPage)
                            mbpdfReader.getPage(2).scaleTo(595.3,841.9)
                            pdfWriter.addPage(mbpdfReader.getPage(2))
                        else:
                            pageObj = processpdfReader.getPage(pageNum)
                            pdfWriter.addPage(pageObj)
                    # 通过open()新建一个PDF文档,然后把pdfWriter的内容写入到pdfOutputFile中。
                    pdfOutputFile = open(os.path.join(savepath, "调查表.pdf"), 'wb')
                    pdfWriter.write(pdfOutputFile)
                    pdfOutputFile.close()
                    mbpdf.close()
                    processpdf.close()

                    #删除过程文件
                    deleteProcess(processPDF)
         #解决页面大小的关键方法:
            mbpdfReader.getPage(2).scaleTo(595.3,841.9)

获取页面大小的方法:

PyPDF2的获取方法

def getPageSize(page_1):
    if page_1.get('/Rotate', 0) in [90, 270]:
        return  page_1['/MediaBox'][3],page_1['/MediaBox'][2]
    else:
        return  page_1['/MediaBox'][2],page_1['/MediaBox'][3]

参考来源:
python操作PDF的详细介绍

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LH的苏小花

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

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

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

打赏作者

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

抵扣说明:

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

余额充值