本文已参与「新人创作礼」活动,一起开启掘金创作之路。
python 操作 word 文件
#创建空白的word文档
currentDocument = Document()
#写入文章标题
currentDocument.add_heading(title)
#设置一个空白段落
p = currentDocument.add_paragraph('')
#设置一个锻炼最后的节点。
run = p.add_run()
#将图片放在段落的的最后
run.add_picture(pic)
#在段落末尾增加文字
p.add_run(para)
#创建空白表格
table = currentDocument.add_table(len(rows), len(cols))
#往对应的单元格中写入内容
for rindex, row in enumerate(rows):
for cindex , col in enumerate(row.find_all('td')):
try:
cell = table.cell(rindex, cindex)
cell.text = col.text
except:
Pass
#增加一段文字
currentDocument.add_paragraph(text= para)
#将word保存进文件
currentDocument.save(filepath)
word = client.DispatchEx("kwps.Application")
word.Visible = 0 #0 不显示wps程序
word.DisplayAlerts = 0 #不警告
doc = word.Documents.Open(filepath)
doc.PageSetup.PaperSize = 7 # 纸张大小, A3=6, A4=7
doc.PageSetup.Orientation = 1 # 页面方向, 竖直=0, 水平=1
doc.SaveAs(filepath) # 文档保存
doc.Close(-1) # doc.Close(-1)保存后关闭,doc.Close()或doc.Close(0)直接关闭不保存
将word 转换为图片
介绍:
如何将word 转化为 图片,我的思路是先将word 文档转换为pdf 文件,然后再将pdf 转换为图片。因为没有直接换的接口,所以我想到了曲线救国,这个思路可能并不是很好,或许现在有更好的解决方法,这里可供参考
一:将word 文档转换为pdf 文件
要先安装win32com,使用以下命令行。
pip3 install win32com
直接上代码
from win32com import client
word = client.DispatchEx("kwps.Application")
word.Visible = 0 #0 不显示wps程序
in_file = " inputfile.docx"
new_file = 'outputfile.pdf'
doc = word.Documents.Open(in_file)
doc.PageSetup.PaperSize = 7 # 设置word纸张大小, A3=6, A4=7
doc.PageSetup.Orientation = 1 # 设置word页面方向, 竖直=0, 水平=1
doc.SaveAs(in_file) # 文档保存
doc.Close()
doc = word.Documents.Open(in_file)
doc.SaveAs(new_file, FileFormat = 17)
doc.Close()
word.Quit()
print("成功")
二:将pdf转换为图片
将pdf转换为图片比较复杂,需要借助两个库,fitz 和 PyQt5.QtGui
将pdf 的某一页转换为图片:
import fitz
from PyQt5 import QtGui
fname = 'inputfile.pdf'
try:
doc = fitz.open(fname)
page = doc.loadPage(1) #获取pdf 的第二页,可使用循环将所有转换为图片。
pagePixmap = page.getPixmap()
# 获取 image 格式
imageFormat = QtGui.QImage.Format_RGB888
# 生成 QImage 对象
pageQImage = QtGui.QImage(pagePixmap.samples,pagePixmap.width, pagePixmap.height,
pagePixmap.stride, imageFormat)
pageQImage.save('outputfile.jpg')
print("成功")
except:
print("错误")
提醒:
- 上面的代码可以将pdf的某一页转换为图片,再加个循环就可以将所有pdf都转换为图片。
- 转换出来的图片的分辨率会有点差,大概在 850*600 左右,对于一些数据可能会造成很模糊,暂时未找到提高分辨率的方法。