免费pdf转高清图片

免费pdf转高清图片

前言

这款软件是站长亲自开发的。在其开发过程中,主要采用了Python语言,并大量地利用了两个核心库:PyMuPDF和tkinter。其中,PyMuPDF库专为PDF文件的读取、编辑和处理而设计,提供了丰富的功能以满足各种PDF操作的需求。而tkinter库是Python中经典且广泛使用的图形用户界面库,让软件开发者可以轻松构建直观且友好的用户界面。这两个库的结合使得这款软件在功能性和用户体验上都表现出色。

软件截图

图片[1]-免费pdf转高清图片

软件需要选择PDF文件然后再选择输出位置然后可以选择图片的清晰度,清晰度越高处理时间越久,但是也就几秒的事情,主要还是看设备来,有一个小问题就是刚开始选择文件和输出位置的时候可能会有点小卡顿,还望理解

软件下载

pdf转高清图片.zip

开源代码

这些代码是才用Python的ostkinterfiledialogfitz(PyMuPDF),这几个库,通常情况下Python的os 和 tkinter,它们是Python的标准库,通常无需单独安装。如果您使用的是Python 3,那么它们应该已经包含在您的安装中。

因此你只需要安装PyMuPDF库,可以用下面这个代码在终端安装

pip install PyMuPDF

安装好之后一般情况下就可以直接运行开源代码了,开源代码如下

import os
import tkinter as tk
from tkinter import filedialog
import fitz  # PyMuPDF


def pdf_to_images(pdf_path, output_folder, scale_factor):
    pdf_document = fitz.open(pdf_path)

    for page_num in range(pdf_document.page_count):
        page = pdf_document.load_page(page_num)
        pix = page.get_pixmap(matrix=fitz.Matrix(scale_factor, scale_factor))

        image_path = os.path.join(output_folder, f"page_{page_num + 1}.png")
        pix.save(image_path, "png")

    pdf_document.close()


def choose_pdf_file():
    pdf_file_path = filedialog.askopenfilename(filetypes=[("PDF files", "*.pdf")])
    pdf_file_entry.delete(0, tk.END)
    pdf_file_entry.insert(0, pdf_file_path)


def choose_output_folder():
    output_folder_path = filedialog.askdirectory()
    output_folder_entry.delete(0, tk.END)
    output_folder_entry.insert(0, output_folder_path)


def convert_pdf_to_images():
    pdf_path = pdf_file_entry.get()
    output_folder = output_folder_entry.get()
    scale_factor = float(scale_factor_var.get())
    pdf_to_images(pdf_path, output_folder, scale_factor)
    result_label.config(text="转换完成!")


# 创建主窗口
root = tk.Tk()
root.title("PDF转换为图片")

# 添加选择PDF文件的部件
pdf_file_label = tk.Label(root, text="选择PDF文件:")
pdf_file_label.pack()

pdf_file_entry = tk.Entry(root, width=50)
pdf_file_entry.pack()

pdf_file_button = tk.Button(root, text="浏览", command=choose_pdf_file)
pdf_file_button.pack()

# 添加选择输出位置的部件
output_folder_label = tk.Label(root, text="选择输出位置:")
output_folder_label.pack()

output_folder_entry = tk.Entry(root, width=50)
output_folder_entry.pack()

output_folder_button = tk.Button(root, text="浏览", command=choose_output_folder)
output_folder_button.pack()

# 添加清晰度选择标签
clarity_label = tk.Label(root, text="请选择图片的清晰度(清晰度越高处理时间越久)")
clarity_label.pack()

# 选择图片清晰度
scale_factor_var = tk.StringVar(value="2.0")
choices = {"普通 (2.0)": "2.0", "高清 (7.0)": "7.0", "超高清 (10.0)": "10.0"}
for label, value in choices.items():
    radiobutton = tk.Radiobutton(root, text=label, variable=scale_factor_var, value=value)
    radiobutton.pack(anchor="w")

# 添加转换按钮
convert_button = tk.Button(root, text="转换为图片", command=convert_pdf_to_images)
convert_button.pack()

# 添加结果标签
result_label = tk.Label(root, text="")
result_label.pack()

# 启动主循环
root.mainloop()
© 版权声明
THE END
喜欢就支持一下吧
点赞12赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容