做pc端网站平台,网站后台选择,焦作网站建设服务,参考消息网国内新闻pdf拆分成有图和无图的pdf(方便打印)
原因 打印图片要彩印#xff0c;每次都要手动弄#xff0c;打印的时候很麻烦#xff1b; 随着打印次数的增加#xff0c;时间就越来越多 为解决此问题#xff0c;使用python写一个exe解决这个问题 历程
找一个python的GUI界面找到 t…pdf拆分成有图和无图的pdf(方便打印)
原因 打印图片要彩印每次都要手动弄打印的时候很麻烦 随着打印次数的增加时间就越来越多 为解决此问题使用python写一个exe解决这个问题 历程
找一个python的GUI界面找到 tkinter寻找拖拽文件的依赖 tkinterdnd2找打包python打包成exe的 pyinstaller 依赖打包异常移除tkinter图标tkinterdnd2打包exe运行异常移除tkinterdnd2使用windnd替换tkinterdnd2 实现文件拖拽文件太宽采用A3打印所以扩展输出类型打包文件 pyinstaller --onefile --windowed --iconpdf.ico .\ChangePDF.py打包 exe 源码 Author: Jeff.zheng
Date : 2024/5/28
Desc : 读取PDF拆分成两个有图像和无图像的文件import os
import shutil
import tkinter as tk
import fitz
import windnd# 输入
def readPDF(pdfPath):fileName os.path.splitext(os.path.basename(pdfPath))[0]pdfDoc fitz.open(pdfPath)picturePDFA4 fitz.open()picturePDFA3 fitz.open()wordPDF fitz.open()for pageNum in range(len(pdfDoc)):# 选择当前页page pdfDoc[pageNum]image_list page.get_images(fullTrue) # 获取页面上所有图片的信息# 检查是否有图片if image_list:print(fPage {pageNum 1} contains images.)width page.rect.widthprint(f{pageNum 1} 宽度, width)if width 700:print(A3)picturePDFA3.insert_pdf(pdfDoc, from_pagepageNum, to_pagepageNum)else:print(A4)picturePDFA4.insert_pdf(pdfDoc, from_pagepageNum, to_pagepageNum)else:wordPDF.insert_pdf(pdfDoc, from_pagepageNum, to_pagepageNum)print(fPage {pageNum 1} does NOT contain images.)if len(picturePDFA4) 0 or len(wordPDF) 0 or len(picturePDFA3) 0:initDir()if len(picturePDFA4) 0:writePDF(picturePDFA4, 图片_A4_ fileName)root.after(2000, initLabel)if len(picturePDFA3) 0:writePDF(picturePDFA3, 图片_A3_ fileName)root.after(2000, initLabel)if len(wordPDF) 0:writePDF(wordPDF, 文字_A4_ fileName)root.after(2000, initLabel)def initLabel():changeLabel(label, 拖拽PDF完成拆分 \n1.拆分成有图片和无图片的PDF \n2.输出文件在桌面或者Destop, black)def initDir():needPath os.path.join(os.path.expanduser(~), Desktop) \\pdf-拆分文件if not os.path.exists(needPath):os.makedirs(needPath)else:try:shutil.rmtree(needPath)os.makedirs(needPath)print(f{needPath} 已被成功删除。)except OSError as e:print(f删除{needPath}时发生错误: {e.strerror})# 输出
def writePDF(pdfFile, pdfName):needPath os.path.join(os.path.expanduser(~), Desktop) \\pdf-拆分文件savePath os.path.join(needPath, f{pdfName}.pdf)pdfFile.save(savePath)pdfFile.close() # 关闭新文档def draggedFiles(files):filePath \n.join((item.decode(gbk) for item in files))fileType os.path.splitext(os.path.basename(filePath))[1].lower()if fileType .pdf:readPDF(filePath)changeLabel(label, 导入完成\n, green)else:changeLabel(label, 导入失败\n 1.请导入PDF不支持其他格式\n 2.检查格式请重新拖放文件 \n, red)def changeLabel(myLabel, text, fg):myLabel.config(texttext)myLabel.config(fgfg) # 绿色if __name__ __main__:root tk.Tk()root.title(PDF拆分jeff.zheng制作)root.geometry(400x400)# 调用函数创建居中文本的Labeltext 拖拽PDF完成拆分 \n1.拆分成有图片和无图片的PDF \n2.输出文件在桌面或者Destopframe tk.Frame(root, padx10, pady10) # 创建一个带有内边距的Frame以帮助居中frame.pack(filltk.BOTH, expandTrue) # 让Frame填充父容器并扩展# 计算Frame的宽度和高度以便根据这些尺寸来定位Labelframe.update_idletasks() # 确保frame尺寸已经计算label tk.Label(frame, texttext, justifytk.LEFT, anchorw) # 设置文本左对齐label.place(relx0.5, rely0.5, anchorcenter) # 使用place定位通过relx和rely实现垂直居中windnd.hook_dropfiles(root, funcdraggedFiles)# 运行Tkinter事件循环root.mainloop() exe下载地址
https://download.csdn.net/download/qq_44309969/89380597