pdf转图片,WPS转换是收费的,免费的是有水印的,就写了这个代码。文件下载是打包好的.exe
import os
import fitz
import tkinter as tk
from tkinter import filedialog
def convert_to_png(file_path, zoom, png_path):
    doc = fitz.open(file_path)
    total = doc.page_count
    for pg in range(total):
        page = doc[pg]
        zoom = int(zoom)  # 值越大,分辨率越高,文件越清晰
        rotate = int(0)
        trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).prerotate(rotate)
        pm = page.get_pixmap(matrix=trans, alpha=False)
        if not os.path.exists(png_path):
            os.makedirs(png_path)
        save = os.path.join(png_path, f'page_{pg + 1}.png')
        pm.save(save)
    doc.close()
def browse_pdf():
    global pdf_file_path
    pdf_file_path = filedialog.askopenfilename(title="选择PDF文件", filetypes=[("PDF files", "*.pdf")])
    pdf_label.config(text=f"选择的PDF文件: {pdf_file_path}")
def convert_to_png_and_save():
    if pdf_file_path:
        zoom_value = zoom_entry.get()
        png_folder = png_folder_entry.get()
        # 设置默认的放大倍数和 PNG 文件夹路径
        zoom = int(zoom_value) if zoom_value.isdigit() else 200
        # 如果未手动输入路径,则使用默认路径 outimg
        png_path = png_folder if os.path.isdir(png_folder) else 'outimg'
        # 调用转换函数
        convert_to_png(pdf_file_path, zoom, png_path)
        result_label.config(text=f"转换完成,PNG文件保存在:{png_path}")
    else:
        result_label.config(text="请先选择PDF文件")
# 创建主窗口
root = tk.Tk()
root.title("PDF to PNG Converter")
# 设置窗口宽度和高度
window_width = 400
window_height = 300
# 获取屏幕宽度和高度
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
# 计算窗口左上角坐标使其居中
x_position = (screen_width - window_width) // 2
y_position = (screen_height - window_height) // 2
# 设置窗口大小和位置
root.geometry(f"{window_width}x{window_height}+{x_position}+{y_position}")
# 选择PDF文件按钮
browse_button = tk.Button(root, text="选择PDF文件", command=browse_pdf)
browse_button.pack(pady=10)
# 显示选择的PDF文件路径
pdf_label = tk.Label(root, text="选择的PDF文件: ")
pdf_label.pack()
# 输入放大倍数
zoom_label = tk.Label(root, text="放大倍数:")
zoom_label.pack()
zoom_entry = tk.Entry(root)
zoom_entry.insert(0, "200")  # 设置默认值
zoom_entry.pack()
# 输入PNG文件夹路径
png_folder_label = tk.Label(root, text="PNG文件夹路径:")
png_folder_label.pack()
png_folder_entry = tk.Entry(root)
png_folder_entry.insert(0, "outimg")  # 设置默认值为空
png_folder_entry.pack()
# 转换按钮
convert_button = tk.Button(root, text="转换为PNG", command=convert_to_png_and_save)
convert_button.pack(pady=10)
# 显示转换结果
result_label = tk.Label(root, text="")
result_label.pack()
# 在窗口底部添加 "Development by 都百顺" 横向居中显示
developer_label = tk.Label(root, text="Development by 都百顺(抖音号:dubaishun12)")
developer_label.pack(side="bottom", pady=20)
# 运行主循环
root.mainloop()

不带GUI核心代码:
import os
importfitz
def covert2pic(file_path, zoom, png_path):
    doc = fitz.open(file_path)
    total = doc.page_count
    for pg in range(total):
        page = doc[pg]
        zoom = int(zoom)  # 值越大,分辨率越高,文件越清晰
        rotate = int(0)
        trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).prerotate(rotate)
        pm = page.get_pixmap(matrix=trans, alpha=False)
        if not os.path.exists(png_path):
            os.mkdir(png_path)
        save = os.path.join(png_path, '%s.png' %(pg+1))
        pm.save(save)
    doc.close()
if __name__ == "__main__":
    pdfPath = './速光网络/速光智语app软著.pdf'
    imagePath = './'
    covert2pic(pdfPath, 200, imagePath)
END
如本资源侵犯了您的权益,请联系投诉邮箱admin@wmphp.com进行举报!我们将在收到邮件的1个小时内处理完毕。
本站仅为平台,发布的资源均为用户投稿或转载!所有资源仅供参考学习使用,请在下载后的24小时内删除,禁止商用!
Wmphp.com(完美源码)助力正版,如您有自己的原创产品,可以联系客服投稿,代理出售!
Wmphp.com(完美源码)客服QQ:136882447
Wmphp.com(完美源码)商务电话(仅对企业客户/个人用户):15120086569 (微信同步)
请注意:本站不提供任何免费的技术咨询服务,为了节约时间,下载前 请确认自己会技术
完美源码 » Python pdf转png
    完美源码 » Python pdf转png
 
         
     
  
      
             
  
      
             
  
      
             
  
      
            