爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 15908|回复: 0

[源代码] [已收纳]python:从pdf文件批量提取图片

[复制链接]

新浪微博达人勋

发表于 2021-1-31 17:30:58 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
有时候我会从淘宝买、或下载一些pdf,
例如附件的《云彩收集者手册》或NASA的杂志《earth_book_2019_tagged》,
上面的图很好看,我想批量存下来,这时就需要python的pymupdf模块了

代码:

# -*- coding: utf-8 -*-
"""
从pdf文件提取图片
安装包:pip install pymupdf
脚本和pdf文件放在同一级目录,程序会生成子文件夹<图片>,
提取的图片按“p+页码n+该页第m个图”的形式命名,
例如第9页的第2张图:p9-2.png
"""
import fitz,sys,os


path=os.path.dirname(sys.argv[0])
os.chdir(path)
imgFold=path+'\\图片'
if not os.path.isdir(imgFold):
    os.makedirs(imgFold)


pdfFile='earth_book_2019_tagged.pdf'
doc=fitz.open(pdfFile)
pageNum=len(doc)#文件页数
print('文件页数=',pageNum)
for i in range(pageNum):
    imglist = doc.getPageImageList(i)
    for j, img in enumerate(imglist):
        xref = img[0]
        pix = fitz.Pixmap(doc, xref)   # make pixmap from image
        if pix.n - pix.alpha < 4:      # can be saved as PNG
            pix.writePNG(imgFold+"\\p%s-%s.png" % (i+1, j+1))
        else:                          # CMYK: must convert first
            pix0 = fitz.Pixmap(fitz.csRGB, pix)
            pix0.writePNG(imgFold+"\\p%s-%s.png" % (i+1, j+1))
            pix0 = None                # free Pixmap resources
        pix = None                     # free Pixmap resources




云彩收集者手册_电子原版.pdf

9.01 MB, 下载次数: 4, 下载积分: 金钱 -5

earth_book_2019_tagged.pdf

33.71 MB, 下载次数: 20, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表