1、解决的问题

最近工作中,常常遇到同事让帮忙扫描文件,再将扫描出来的文件做成一份PDF文件,以前会使用免费的在线网站进行转换,最近开始收费了(不能白嫖了!)。打工人挣钱不易,自己做个吧!

2、用到的技术

语言:python

模块:fpdf、tkinter

3、前置步骤

安装fpdf模块:

pip install fpdf

若需要打包的话,还需要安装pyinstaller(此处不讲)打包过程中容易遇到坑(此处也不讲)。

4、源码

fpdf安装完成后,下述源码可直接运行

import os
from fpdf import FPDF
import fpdf
import tkinter as tk
import tkinter.messagebox
from html.parser import HTMLParserclass img2Pdf:def __init__(self,path,file_name_list):self.pdf = FPDF()self.pdf.set_auto_page_break(0)  # 自动分页设为Falseself.path = pathself.file_name_list = file_name_listdef __del__(self):passdef img_pdf(self):msg = "成功"try:self.file_name_list = self.file_name_list.split(',')for image in self.file_name_list:if os.path.isfile(self.path+'\\'+image):self.pdf.add_page()self.pdf.image(os.path.join(self.path, image), w=int(210*0.9), h=int(297*0.9))  # 指定宽高else:msg = "失败:文件不存在" + imageself.pdf.output(os.path.join(self.path, self.file_name_list[0]+".pdf"), "F")except Exception as e:msg = "失败:"+efinally:return msgclass img2pdf_tkinter:def __init__(self):self.root = tk.Tk()self.root.title('IMG===》PDF')# 传值变量self.textVar_Path = tk.StringVar()self.textVar_Path.set('示例:'+r'D:\Img2Pdf')self.textVar_File = tk.StringVar()self.textVar_File.set('示例:001.jpg,002.jpg')self.msg = ""self.source_path = ""self.file_name_list = ""self.img2Pdf = img2Pdf(path=self.source_path, file_name_list=self.file_name_list)def __del__(self):passdef window(self):# 两个sticky=W实现第一列左对齐tk.Label(self.root, text='文件地址').grid(row=0, sticky=tk.W)tk.Label(self.root, text='图片名称').grid(row=1, sticky=tk.W)# rowspan=2可以让图片横跨2行photo = tk.PhotoImage(file='./640041e03e438197442f8c82a81acca1.png')tk.Label(self.root, image=photo).grid(row=0, column=2, rowspan=2, padx=5, pady=5)tk.Entry(self.root,textvariable=self.textVar_Path).grid(row=0, column=1)tk.Entry(self.root,textvariable=self.textVar_File).grid(row=1, column=1)# columnspan=3可以让按钮横跨3列tk.Button(text='提交', width=10, command=self.getText).grid(row=2, columnspan=3, pady=5)tk.mainloop()def getText(self):self.source_path = self.textVar_Path.get().strip()self.file_name_list = self.textVar_File.get().strip().replace(',',',')self.img2Pdf = img2Pdf(path=self.source_path, file_name_list=self.file_name_list)self.msg = self.img2Pdf.img_pdf()if len(self.msg):if '失败' in self.msg:tkinter.messagebox.showerror('错误', self.msg)else:tkinter.messagebox.showinfo('提示', '转换成功')if __name__ == '__main__':img2pdf_tkinter = img2pdf_tkinter()img2pdf_tkinter.window()

5、效果展示

成品下载:https://download.csdn.net/download/hanxia159357/66923384

多张图片转成PDF文件相关推荐

  1. 多张图片合并成PDF文件,还在下载合并软件,PS就能帮你搞定

    我们知道pdf格式是我们在工作和学习中常用的一种文件格式,pdf是一种通用的文档格式.很多阅读器都支持pdf格式,比如小编就非常喜欢用kindle来进行阅读,kindle可以打开pdf格式的电子书,可 ...

  2. jpg转换成PDF 如何将多张图片合成一个PDF文件

    一般扫描一些文档资料之后形成的图片会放在同一个文件夹中,但是有时为了便于查看和管理这些图片,就会将图片合成一个文档,这样查看内容的时候会比较方便,一般也都是将图片转换成PDF文件. 把图片转换成PDF ...

  3. 【微信小程序云开发】使用云函数(node.js)实现多张图片转成pdf的功能,且pdf带水印

    最近在做项目的时候,碰到一个功能需要多张图片转成pdf的功能,首先,在网上找了很多资料,都没有一个合适的. 后来,就自己动手使用云函数写了一个处理图片转成pdf的云函数,而且需带水印. 直奔主题,使用 ...

  4. 使用python将多张图片转换成pdf

    有朋友在问如何通过Python将多张图片转换成pdf,刚好之前写了一个小功能,分享给大家. 不多说,直接上代码: #!/usr/local/python3.6.5 #cd /usr/local/pyt ...

  5. 把jpg文件转换成pdf文件

    把jpg文件转换成pdf文件 生涯中,人人常常会拍摄一些照片用来忖量,可是岁月长了,时时会由于照片多而杂乱而懒于翻看,那末你是否思虑做一个电子相册,或制造一本PDF花样的书本来翻看呢?业余的这款JPG ...

  6. 如何将JPG图片转换成PDF文件

    图片这种文件格式已经不仅仅是在工作中会使用到,作为我们生活中,朋友之间在网络渠道上聊天交流,也会用图片来表达一些情绪,增添聊天中活跃的气氛.虽然很适用于聊天中,但是如果工作中同事之间传送图片文件,会显 ...

  7. 将多个图片转换成PDF文件-img2pdf

    ➤01 背景 TEASOFT教学软件 应用中需要将DOP文件转换成可以分发的PDF文件,主要过程是将DOP文件转换成高分辨率的BMP\JPEG文件,然后再通过 Acrobat软件将它们合成为PDF文件 ...

  8. php html转化为pdf,PHP将html转换成PDF文件

    昨天在群里看见一位小朋友在求助,他的问题是如果将html页面中的部分html代码转换成PDF文件,我昨天尝试做了一下, 今天给大家分享一下教程和代码. 首先我们需要借助一个PHP的类库及拓展来完成这个 ...

  9. python怎么变成文档_python3如何将docx转换成pdf文件

    本文实例为大家分享了python3将docx转换成pdf文件的具体代码,供大家参考,具体内容如下 直接上代码 # -*- encoding:utf-8 -*- """ a ...

最新文章

  1. Spring Boot 整合 Quartz 实现 Java 定时任务的动态配置
  2. C语言中链表的英文名字,数据结构C语言版 循环链表表示和实现(国外英文).doc
  3. php 清除缓存的操作,PHP清除缓存的几种方法
  4. 使用 Microsoft Ajax Library 创建自定义客户端脚本
  5. leetcode - two-sum
  6. U3D非常诡异的【结构体引用】现象-个例
  7. AAAI 2020 开源论文 | 用于深度立体匹配的自适应单峰匹配代价体滤波
  8. kafka修改分区数_Kafka笔记
  9. NSLog(@%@,类对象); 默认输出类名
  10. java中gc是怎么工作的_java中的GC(gabage collection)如何工作
  11. ASP.NET MVC3中的ViewBag动态性
  12. 矢量归一化_关于LRL矢量的一点分析
  13. Python随机梯度下降法(二)
  14. 2020年11月连云港计算机考试,2019年江苏省连云港市下半年全国计算机等级考试考务通知...
  15. Python设计模式:旁观者模式
  16. 第四天 轨道交通仿真入门
  17. 苹果手表连接是什么原理_为什么苹果手表是最具潜力的苹果产品
  18. Sketch插件开发入门
  19. mysql: create routin表示的是什么?,关于mysql create routine 权限的一些说明
  20. java piggy,piggymetrics

热门文章

  1. linux下载安装的命令,linux安装和常用命令
  2. 相似图片搜索、算法、识别的原理解析(下)
  3. ubuntu下执行sudo命令提示:xx is not in the sudoers file. This incident will be reported.
  4. matlab 可视化界面,[转载]Matlab 的可视化界面设计(上)
  5. 【数据结构基础整理】图--06:克鲁斯卡尔算法详解
  6. 深度学习训练之optimizer优化器(BGD、SGD、MBGD、SGDM、NAG、AdaGrad、AdaDelta、Adam)的最全系统详解
  7. 使用Navicat将MySql数据库导入和导出
  8. 美团脱颖而出的经验_使用条件格式使重要的Outlook邮件脱颖而出
  9. fast无线网卡linux驱动,fast无线网卡驱动,详细教您fast无线网卡驱动
  10. 计算机视觉 (CV) 相关的会议或期刊投稿时间