Python调用WPS把文档转换PDF,并把PDF转图片
简介Python调用WPS把文档转换PDF,并把PDF转图片,首先需要安装WPS,然后利用pypiwin32把文档转化成PDF,再利用fitz、PyMuPD把PDF转化成图片
一、文档转PDF
1、准备:因为需要用WPS转换文档,那么需要先安装WPS;
2、安装pypiwin32包
pypiwin32是一个用于操作Windows系统的Python模块。它提供了许多用于操作Windows API的函数和类,让开发者能够在Python中方便地进行Windows系统操作。
pip install pypiwin32
3、代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import win32com.client
import time
def ConvertByWps(sourceFile, targetFile):
if not os.path.exists(sourceFile):
print(sourceFile + "不存在,无法继续!")
return False
typemap = {
"doc": "word",
"docx": "word",
"ppt": "ppt",
"pptx": "ppt",
"xls": "excel",
"xlsx": "excel",
}
name_arr = sourceFile.split(".")
suffix = name_arr[len(name_arr) - 1]
wpstype = typemap.get(suffix)
if wpstype is None:
return False
os.system("taskkill /im wps.exe")
# 如果文件存在就删除
if os.path.exists(targetFile):
os.remove(targetFile)
if wpstype == "word":
ConvertDocToPdf(sourceFile, targetFile)
elif wpstype == "ppt":
ConvertPptToPdf(sourceFile, targetFile)
elif wpstype == "excel":
ConvertXlsToPdf(sourceFile, targetFile)
if os.path.exists(targetFile):
return True
else:
return False
# 转换 Word文件档到pdf
def ConvertDocToPdf(src, dst):
wps = win32com.client.Dispatch("Kwps.Application")
wps.Visible = False
doc = wps.Documents.Open(src)
doc.ExportAsFixedFormat(dst, 17)
doc.Close()
wps.Quit()
# 转换 PPT文件档到pdf
def ConvertPptToPdf(src, dst):
wps = win32com.client.Dispatch("Kwpp.Application")
wps.Visible = False
ppt = wps.Presentations.Open(src)
ppt.SaveAs(dst, 32)
ppt.Close()
wps.Quit()
# 转换 XLS文件档到pdf
def ConvertXlsToPdf(src, dst):
wps = win32com.client.Dispatch("Ket.Application")
excel = wps.Workbooks.Open(src)
excel.ExportAsFixedFormat(0, dst)
excel.Close()
wps.Quit()
if __name__ == "__main__":
# 当前目录
d = os.path.dirname(__file__)
abspath = os.path.abspath(d)
# 测试用例
src = abspath + r"/111.doc"
dst = abspath + r"/111.pdf"
r = ConvertByWps(src, dst)
print(r)
二、PDF转图片
1、安装依赖
pip install fitz
pip install PyMuPDF
2、解决错误(没有则跳过)
在安装的过程中需要解决出现的一些问题。
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
出现上面错误参考这个文档:python中,Microsoft Visual C++ 14.0 or greater is required问题解决方案 - 张飞的猪 - 博客园 (cnblogs.com)
3、代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import win32com.client
import time
# 将PDF转化为图片
# pdfPath pdf文件的路径
# imgPath 图像要保存的文件夹
# zoom_x x方向的缩放系数
# zoom_y y方向的缩放系数
# rotation_angle 旋转角度
def pdf_image(pdfPath, imgPath, zoom_x, zoom_y, rotation_angle):
path_arr = pdfPath.split(os.sep)
path_arr.reverse()
filename = ""
if len(path_arr) > 0:
filename = path_arr[0].split(".")[0]
start_time = time.perf_counter()
pdf = fitz.open(pdfPath)
pageCount = pdf.page_count
if pageCount > 3:
pageCount = 3
# 逐页读取PDF
filename_arr = []
for pg in range(0, pageCount):
page = pdf[pg]
# 设置缩放和旋转系数
trans = fitz.Matrix(zoom_x, zoom_y).prerotate(rotation_angle)
pm = page.get_pixmap(matrix=trans, alpha=False)
# 开始写图像
filename_all = f"{imgPath}{os.sep}{filename}_{str(pg)}.png"
pm.save(filename_all)
filename_arr.append(filename_all)
pdf.close()
end_time = time.perf_counter()
print(f"时间差:{end_time-start_time}")
print(len(filename_arr))
if __name__ == "__main__":
# 当前目录
d = os.path.dirname(__file__)
abspath = os.path.abspath(d)
dst = abspath + r"\111.pdf"
pdf_image(dst, abspath, 2, 2, 0)
快速生成表格
符号表(Symbol Table)是一个非常常见的数据结构,在现实生活中应用很多。它是一个“键”—“值”对应的结构。在符号表中,存储的是键值对。通过输入键,查询对应的值。
图像梯度计算的是图像变化的速度。对于图像的边缘部分,其灰度值变化较大,梯度值也较大;相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小。图像梯度计算需要求导数,但是图像梯度一般通过计算像素值的差来得到梯度的近似值(近似导数值)。本节主要介绍Sobel算子、Scharr算子、Laplacian算子和Canny算子的使用.
nodejs中使用npm和yarn,使用最新阿里云镜像 aliyun mirror,网上很多还是文章用的是下面这个地址~~yarn config set registry https://registry.npm.taobao.org~~
如何查看Mysql的二进制日志文件内容,其实Mysql本身就提供了一个命令就是mysqlbinlog,本文主要记录Mysql的mysqlbinlog命令的使用。
Electron页面跳转、浏览器打开链接和打开新窗口
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。