python 操作 word 文件和将word 转换为图片

955 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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 左右,对于一些数据可能会造成很模糊,暂时未找到提高分辨率的方法。