PDF转图片工具

起因:在工作中,可能遇到需要提取pdf中的某一张图片,直接截图感觉不太好,用某软件可能又有水印,或者需要开会员收费。

实现:编写一套转换的工具,完成pdf转换出高质量的图片

思路:用代码编写,写一个GUI页面方便使用,用拖拽的方式简化用户操作。最后再生成exe方便推广。

来,直接上干货:

零金币下载转换工具exe版:pdf转图片工具exe-图像处理文档类资源-优快云下载

好了,下面上代码,喜欢研究的可以参考下。

import tkinter as tk
from tkinter import *
from tkinter.messagebox import showinfo
import windnd
import os
import fitz

'''
pdfPath pdf文件的路径
imgPath 图像要保存的文件夹
zoom_x x方向的缩放系数
zoom_y y方向的缩放系数
rotation_angle 旋转角度
'''


# 定义一个转换的方法,输入文件路径,输出路径,缩放系数,旋转角度。
def pdf_image(pdfPath, imgPath, zoom_x, zoom_y, rotation_angle):
    # 打开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.get_pixmap(matrix=trans, alpha=False)
        # 开始写图像
        pm.save(imgPath + str(pg) + ".png")
    pdf.close()


# 定义一个获取拖拽文件的方法,并调用转换方法完成转换
def get_dragged_files(files):
    global text1
    # 循环处理
    for i in files:
        i = i.decode("gbk")
        # 如果是文件夹,则提示让他拖拽单个文件吧。不想循环去遍历文件夹
        if os.path.isdir(i):
            text1.set("只能单个单个转换pdf格式文件")
        # 如果是文件,且是pdf,则进行转换。
        elif os.path.isfile(i):
            if (str(i).split(".", 1)[1]).lower() == "pdf":
                os.makedirs(os.getcwd() + "\\" + os.path.basename(i).split('.')[0])
                pdf_image(i, os.getcwd() + "\\" + os.path.basename(i).split('.')[0] + "\\", 5, 5, 0)
                text1.set("转换完成\r\r转换的图片在本程序同级目录\r\r继续拖拽可继续转换")
                showinfo("提示", "转换完成")
            else:
                text1.set("只能转换pdf格式文件")
        else:
            text1.set("拖拽文件不正确。")


rootWindow = tk.Tk()
rootWindow.title("PDF转图片工具v1.0")
rootWindow.geometry("300x250")  # 界面大小
text1 = StringVar()
text1.set("请将PDF文件拖拽进来")
text = Label(rootWindow, textvariable=text1, width=100, justify='center')
text.pack(expand=True)
windnd.hook_dropfiles(rootWindow, func=get_dragged_files)

rootWindow.mainloop()

目前还想增加在转换过程中加一个转换进度,但是还没思路,

以及想在转换的过程中增加等待效果。但是都还没实现。

工具可能还有很多改进的地方,欢迎评论指导一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值