找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 44|回复: 0

[Python 转载] python pdf转图片,图片转pdf

[复制链接]

2万

主题

128

回帖

10万

积分

管理员

积分
105812
发表于 2023-3-16 09:36:37 | 显示全部楼层 |阅读模式 IP:山东省临沂市沂水县 联通

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
python pdf转图片,图片转pdf


首先安装两个模块pip install fitz
pip install Pillow

执行代码前,先在执行文件当前目录创建pdf和img两个文件夹


00001.png

可批量将pdf转为图片文件


[Python] 纯文本查看 复制代码
import fitz
import os
'''
# 将PDF转化为图片
pdfPath pdf文件的路径
imgPath 图像要保存的文件夹
zoom_x x方向的缩放系数
zoom_y y方向的缩放系数
rotation_angle 旋转角度
'''
def pdf_image(pdfPath,imgPath,zoom_x,zoom_y,rotation_angle):
    #获取pdf文件名
    files = os.listdir(folder)
    print(files)
    #创建对应pdf文件的img文件夹
     
    #1.设置保存的img文件路径
    #2.获取pdf文件路径
    #3.打开pdf文件
    #4.读取PDF文件
    #5.保存img文件
    for file in files:
        #设置img文件路径
        saveImgPath = imgPath + file[0:-4] + '/'
        #创建对应pdf文件的img文件夹
        isExists=os.path.exists(saveImgPath)
        # 判断结果
        if not isExists:
        # 如果不存在则创建目录
        # 创建目录操作函数
            os.makedirs(saveImgPath) 
        #获取pdf文件路径
        pdfPath = folder + file
        # 打开PDF文件
        pdf = fitz.open(pdfPath)
        # 逐页读取PDF
        for pg in range(0, pdf.pageCount):
            page = pdf[pg]
            # 设置缩放和旋转系数
            trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)
            pm = page.getPixmap(matrix=trans, alpha=False)
            # 开始写图像
            pm.writePNG(saveImgPath+str(pg)+".png")
        pdf.close()
 
curdir = os.path.dirname(__file__)
folder = curdir + "/pdf/" #png图片目录
imgFile = curdir + "/img/" #生成pdf的文件目录
pdf_image(folder,imgFile,5,5,0)


执行结果

1.png
将图片转为pdf,支持png和jpg
如对顺序有要求,可将图片按照顺序改名为从0开始的数字名称。
在执行代码前,先在该目录创建img文件夹,将要转换的图片放到img文件夹当中,转换的pdf文件,会以1.pdf的文件存放在img文件夹当中。
3.png


[Python] 纯文本查看 复制代码
from PIL import Image
import os
#将图片转为pdf
def combine2Pdf( folderPath, pdfFilePath ):
    files = os.listdir( folderPath )
    pngFiles = []
    sources = []
    exts = ['png','jpg']
    for file in files:
        for ext in exts:
            if ext in file:
                pngFiles.append( folderPath + file )
    pngFiles.sort()
    output = Image.open( pngFiles[0] )
    pngFiles.pop( 0 )
    for file in pngFiles:
        pngFile = Image.open( file )
        if pngFile.mode == "RGB":
            pngFile = pngFile.convert( "RGB" )
        sources.append( pngFile )
    output.save( pdfFilePath, "pdf", save_all=True, append_images=sources )
 
if __name__ == "__main__":
    curdir = os.path.dirname(__file__)
    folder = curdir + "/img/" #png图片目录
    pdfFile = curdir + "/img/1.pdf" #生成pdf的文件目录
    combine2Pdf( folder, pdfFile )





执行结果























回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|IOTsec-Zone|在线工具|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-5-7 10:10

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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