当前位置: 首页 > news >正文

做企业网站设泛微e8做网站门户

做企业网站设,泛微e8做网站门户,20个中国风网站设计欣赏,lnmp wordpress 安装背景#xff1a; 今天有个朋友找我#xff1a;“我有个文件需要更改#xff0c;但是文档是PDF的#xff0c;需要你帮我改下内容#xff0c;你是搞软件的#xff0c;这个对你应该是轻车熟路了吧#xff0c;帮我弄弄吧”#xff0c;听到这话我本想反驳#xff0c;我是开…背景 今天有个朋友找我“我有个文件需要更改但是文档是PDF的需要你帮我改下内容你是搞软件的这个对你应该是轻车熟路了吧帮我弄弄吧”听到这话我本想反驳我是开发不是美工然后跟他科普科普两者的分工和区别。后来想想还是算了隔行如隔山讲了可能也是白讲。干脆给他干了得了。毕竟这种类似“程序员修电脑的”印象在亲戚朋友中早已广为流传。 起因 一开始觉得做这个工作很简单打开WPS直接按他的要求编辑下就算完成就可以的可当我打开文档编辑的时候 呵呵这特么干个免费的活感情还要自己掏腰包 于是一个想法冒出来了把文档转成图片再用PS改得了于是我又尝试转换成图片 挣扎 我了个擦要点脸不也不知道啥时候起金山也养成了企鹅家的作风。于是我想想既然是帮人干活这个钱怎么也不至于我掏吧对让他掏可话又说回来就这么点屁事让人花几十上百也是有点坑。 既然WPS处处要花钱那就不用了自己写一个不就OK import fitz import os from PIL import Image from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letterdef pdf_to_images(pdf_path, zoom_x2.0, zoom_y2.0):# 创建输出文件夹pdf_dir os.path.dirname(pdf_path)sub_folder os.path.basename(pdf_path).split(.)[0]output_folder {}/{}/imgs.format(pdf_dir, sub_folder)if not os.path.exists(output_folder):os.makedirs(output_folder)# 打开PDF文件pdf_document fitz.open(pdf_path)for page_num in range(len(pdf_document)):# 获取页面page pdf_document.load_page(page_num)# 设置变换矩阵以增加图像分辨率mat fitz.Matrix(zoom_x, zoom_y)# 转换页面为图像pix page.get_pixmap(matrixmat)# 保存图像output_image_path os.path.join(output_folder, fpage_{page_num 1}.png)pix.save(output_image_path)print(fPDF {pdf_path} 已成功转换为图像并保存到文件夹 {output_folder})def images_to_pdf(images_folder, output_pdf_path):# 获取所有图片文件image_files [f for f in os.listdir(images_folder) if f.endswith((png, jpg, jpeg))]image_files.sort() # 按名称排序确保顺序正确if not image_files:print(没有找到图片文件。)return# 创建一个空白的 PDF 文件c canvas.Canvas(output_pdf_path, pagesizeletter)for image_file in image_files:image_path os.path.join(images_folder, image_file)# 打开图片并获取其尺寸with Image.open(image_path) as img:img_width, img_height img.size# 将图片按比例缩放以适应页面page_width, page_height letterscale min(page_width / img_width, page_height / img_height)img_width * scaleimg_height * scale# 将图片绘制到 PDF 页面上c.drawImage(image_path, 0, page_height - img_height, widthimg_width, heightimg_height)c.showPage() # 开始一个新页面c.save()print(f图片已成功合并为 PDF 文件{output_pdf_path})if __name__ __main__:# 输入 PDF 文档路径# pdf_path input(请输入 PDF 文档的路径)# pdf_to_images(pdf_path)images_folder rE:\PDF_PROJECT\马赛克\images_output # 图片文件夹路径output_pdf_path rE:\PDF_PROJECT\马赛克\马赛克.pdf # 输出PDF文件路径images_to_pdf(images_folder, output_pdf_path) 转成图片修改好以后再给合回去60行代码换了100多的会员头一次感受到了原来技术也不是一文不值O(∩_∩)O哈哈~ 输出 完事后想想这个东西既然花了时间写出来干脆加个界面打包成程序提供给有需要的人用岂不是更能发挥它的价值 说干就干 import os import fitz import tkinter as tk from tkinter import ttk, filedialog, messagebox from PIL import Image from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letter from datetime import datetimeclass PDFImageConverterApp(tk.Tk):def __init__(self):super().__init__()self.title(PDF-图片 转换工具)self.geometry(650x500)self.create_widgets()def create_widgets(self):self.tabControl ttk.Notebook(self)self.pdf_to_img_tab ttk.Frame(self.tabControl)self.img_to_pdf_tab ttk.Frame(self.tabControl)self.tabControl.add(self.pdf_to_img_tab, textPDF转图片)self.tabControl.add(self.img_to_pdf_tab, text图片转PDF)self.create_pdf_to_img_widgets()self.create_img_to_pdf_widgets()self.tabControl.pack(expand1, fillboth)def create_pdf_to_img_widgets(self):ttk.Label(self.pdf_to_img_tab, text请选择PDF文件路径:).grid(column0, row0, padx10, pady10)self.pdf_path tk.StringVar()ttk.Entry(self.pdf_to_img_tab, width50, textvariableself.pdf_path).grid(column1, row0, padx10, pady10)ttk.Button(self.pdf_to_img_tab, textBrowse, commandself.browse_pdf).grid(column2, row0, padx10, pady10)ttk.Label(self.pdf_to_img_tab, text请选择图片输出目录:).grid(column0, row1, padx10, pady10)self.img_output_folder tk.StringVar()ttk.Entry(self.pdf_to_img_tab, width50, textvariableself.img_output_folder).grid(column1, row1, padx10,pady10)ttk.Button(self.pdf_to_img_tab, textBrowse, commandself.browse_img_output_folder).grid(column2, row1,padx10, pady10)ttk.Label(self.pdf_to_img_tab, text图片质量:).grid(column0, row2, padx10, pady10)self.img_quality tk.StringVar(value标清)ttk.Combobox(self.pdf_to_img_tab, textvariableself.img_quality, values[标清, 高清, 超清]).grid(column1, row2, padx10, pady10)self.pdf_to_img_progress ttk.Progressbar(self.pdf_to_img_tab, orienthorizontal, length400,modedeterminate)self.pdf_to_img_progress.grid(column0, row3, columnspan3, padx10, pady10)self.pdf_to_img_log tk.Text(self.pdf_to_img_tab, height10, width70)self.pdf_to_img_log.grid(column0, row4, columnspan3, padx10, pady10)ttk.Button(self.pdf_to_img_tab, text转换, commandself.convert_pdf_to_images).grid(column0, row5,columnspan3, padx10,pady10)def create_img_to_pdf_widgets(self):ttk.Label(self.img_to_pdf_tab, text请选择图片目录:).grid(column0, row0, padx10, pady10)self.images_folder tk.StringVar()ttk.Entry(self.img_to_pdf_tab, width50, textvariableself.images_folder).grid(column1, row0, padx10,pady10)ttk.Button(self.img_to_pdf_tab, textBrowse, commandself.browse_images_folder).grid(column2, row0, padx10,pady10)ttk.Label(self.img_to_pdf_tab, text请选择PDF输出目录:).grid(column0, row1, padx10, pady10)self.pdf_output_path tk.StringVar()ttk.Entry(self.img_to_pdf_tab, width50, textvariableself.pdf_output_path).grid(column1, row1, padx10,pady10)ttk.Button(self.img_to_pdf_tab, textBrowse, commandself.browse_pdf_output_path).grid(column2, row1,padx10, pady10)self.img_to_pdf_progress ttk.Progressbar(self.img_to_pdf_tab, orienthorizontal, length400,modedeterminate)self.img_to_pdf_progress.grid(column0, row2, columnspan3, padx10, pady10)self.img_to_pdf_log tk.Text(self.img_to_pdf_tab, height10, width70)self.img_to_pdf_log.grid(column0, row3, columnspan3, padx10, pady10)ttk.Button(self.img_to_pdf_tab, text转换, commandself.convert_images_to_pdf).grid(column0, row4,columnspan3, padx10,pady10)def browse_pdf(self):file_path filedialog.askopenfilename(filetypes[(PDF files, *.pdf)])if file_path:self.pdf_path.set(file_path)def browse_img_output_folder(self):folder_path filedialog.askdirectory()if folder_path:self.img_output_folder.set(folder_path)def browse_images_folder(self):folder_path filedialog.askdirectory()if folder_path:self.images_folder.set(folder_path)def browse_pdf_output_path(self):file_folder filedialog.askdirectory()if file_folder:timestamp datetime.now().strftime(%y-%m-%d_%H%M%S)output_pdf_path os.path.join(file_folder, foutput_{timestamp}.pdf)self.pdf_output_path.set(output_pdf_path)def log_message(self, log_widget, message):log_widget.insert(tk.END, message \n)log_widget.see(tk.END)def convert_pdf_to_images(self):pdf_path self.pdf_path.get()output_folder self.img_output_folder.get()quality self.img_quality.get()if not pdf_path or not output_folder or not quality:messagebox.showwarning(Warning, 请选择所有输入项.)returnzoom_x, zoom_y 1.0, 1.0if quality 高清:zoom_x, zoom_y 2.0, 2.0elif quality 超清:zoom_x, zoom_y 3.0, 3.0self.pdf_to_img_progress[value] 0self.update()pdf_document fitz.open(pdf_path)total_pages len(pdf_document)for page_num in range(total_pages):page pdf_document.load_page(page_num)mat fitz.Matrix(zoom_x, zoom_y)pix page.get_pixmap(matrixmat)output_image_path os.path.join(output_folder, fpage_{page_num 1}.png)pix.save(output_image_path)self.pdf_to_img_progress[value] (page_num 1) / total_pages * 100self.log_message(self.pdf_to_img_log, fPage {page_num 1}/{total_pages} converted.)self.update()messagebox.showinfo(Info, 图片输出完成.)def convert_images_to_pdf(self):images_folder self.images_folder.get()output_pdf_path self.pdf_output_path.get()if not images_folder or not output_pdf_path:messagebox.showwarning(Warning, 请选择所有输入项.)returnself.img_to_pdf_progress[value] 0self.update()image_files [f for f in os.listdir(images_folder) if f.endswith((png, jpg, jpeg))]image_files.sort()total_images len(image_files)if not image_files:messagebox.showwarning(Warning, 该文件夹下没有图片请重新选择)returnc canvas.Canvas(output_pdf_path, pagesizeletter)for idx, image_file in enumerate(image_files):image_path os.path.join(images_folder, image_file)with Image.open(image_path) as img:img_width, img_height img.sizepage_width, page_height letterscale min(page_width / img_width, page_height / img_height)img_width * scaleimg_height * scalec.drawImage(image_path, 0, page_height - img_height, widthimg_width, heightimg_height)c.showPage()self.img_to_pdf_progress[value] (idx 1) / total_images * 100self.log_message(self.img_to_pdf_log, fImage {idx 1}/{total_images} added to PDF.)self.update()c.save()messagebox.showinfo(Info, PDF转换完成)if __name__ __main__:app PDFImageConverterApp()app.mainloop()打包exe传送门 https://download.csdn.net/download/Hfengxiang/89409663 结语 突然冒出个想法朋友们生活或工作中遇到类似这样的痛点欢迎在评论区讨论一起研究研究看看能否用代码解决^_^
http://www.hkea.cn/news/14462936/

相关文章:

  • 建站公司咨询网站空间租
  • 上海百度做网站24小时学会网站建设 百度云
  • 网站建设经验总结linux是哪个公司开发的
  • 网站建设开发定制个人注册域名网站怎么做
  • 旅游网站html5代码模板wordpress 修改入口文件
  • 好的网站 具备seo优化标题
  • 网站运行环境建设方案北京海淀租车公司价格
  • 如何更好的建设和维护网站如何购买网站域名
  • 西乡城建局网站怎么给餐饮店做网站
  • 做线上网站需要钱吗提升神马关键词排名报价
  • 湖南做网站 就问磐石网络专业网站开发公司网站官网
  • 网站设计与制作报价网站租用服务器费用
  • 怎样找到正规代加工网站免费网站开发合同范本
  • 网站建设丂金手指科杰山西省
  • 网站网站平台建设方案自建wordpress主题
  • 徐州好点的做网站的公司网站建设域名服务器
  • 北京网站建设开发公司h5开发游戏
  • 网页设计与网站开发超链接怎么找到一个公司的网站
  • 精湛的网站建设排行榜广告联盟有哪些平台
  • 如何制作手机免费网站模板教务系统管理系统入口
  • 定制网站多少钱沈阳出名网站
  • 租房网站建设多少钱wordpress 首页显示文章列表
  • 浙江省网站集约化建设通知做钓鱼网站怎么赚钱
  • 网站系统安全防护体系建设方案 下载住建部官网查询
  • 上海网站制作衫商标注册官网查询
  • 做网站在哪里做百度快照投诉中心人工电话
  • 销售一个产品的网站怎么做的重庆天气专业网站建设
  • 灯饰网站源码网站域名查企业邮箱
  • 贵阳网站建设方案书西安包装设计公司
  • 十大免费代理ip软件重庆seo排名扣费