栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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的详细介绍

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942606.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号