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)
如果在使用Gin框架编写web应用程序中,如果里面包含了模板文件和静态文件,我们如何进行打包呢?本文主要记录该操作。
对于小于2TB的磁盘可以使用fdisk和parted命令进行分区,一般采用fdisk命令。但是对于大于2TB的磁盘只能使用parted分区,且需要将磁盘转换为GPT格式。
对加密相关概念整理
opencv 是用于快速处理图像处理、计算机视觉问题的工具,支持多种语言进行开发如c++、python、java等。本教程所有示例基于opencv-python,使用python语言对数字图像进行处理和研究。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
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问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。