python读取word图文信息(包含图文顺序)

项目场景:

最近同事做一个新闻稿自动发布的场景遇到了问题,图文顺序无法解决。
使用快捷键全选复制会显示图片信息不全。如下图:
python读取word图文信息(包含图文顺序)_第1张图片


使用python docx 进行解决

废话少说------直接上代码:

from docx.text.paragraph import Paragraph
from docx.image.image import Image
from docx.oxml.shape import CT_Picture
import docx
from docx.document import Document
from docx.parts.image import ImagePart


def get_picture(document: Document, paragraph: Paragraph):
    """
    document 为文档对象
    paragraph 为内嵌图片的段落对象
    """
    img = paragraph._element.xpath('.//pic:pic')
    if not img:
        return
    img: CT_Picture = img[0]
    embed = img.xpath('.//a:blip/@r:embed')[0]
    related_part: ImagePart = document.part.related_parts[embed]
    image: Image = related_part.image
    return image


def get_img_text(file_path, save_path):
    """
    获取word 图文信息
    :param file_path: 文件地址
    :return: word 文字 和图片信息字典
    """
    res_text = []
    res_img = []
    img_name = 1
    d = docx.Document(file_path)
    for par in d.paragraphs:
        text_aim = par.text
        # print(text_aim)
        if text_aim is not None and text_aim != "":
            # 写入文本
            res_text.append(text_aim)

        image = get_picture(d, par)
        if image is not None:
            # 二进制内容
            blob = image.blob
            # 写入 图片位置
            res_text.append("image")
            # 写入图片名称信息
            res_img.append(save_path+"\\"+str(img_name)+".png")

            # 生成图片
            w_img(blob, save_path+"\\"+str(img_name)+".png")
            img_name = img_name + 1

    return {"text_arr": res_text, "img_arr": res_img}


def w_img(blob_data, save_path):
    """
    图片写入
    :param blob_data:
    :param save_path:
    :return:
    """
    with open(save_path, "wb") as f:
        f.write(blob_data)




如何使用:

提示:使用方法:直接使用函数 get_img_text 即可,该函数有两个参数,第一个是word 文件地址,第二个是图片保存路径。调用代码如下

file_p = r"E:\desk\test11\test.docx"

print(get_img_text(file_p, r"E:\desk\test11"))

1.下图是我用来才是的文档
python读取word图文信息(包含图文顺序)_第2张图片
2.文章内容如下,图片都有一定顺序:
python读取word图文信息(包含图文顺序)_第3张图片
3.运行之后,会返回文本和保存的图片信息
python读取word图文信息(包含图文顺序)_第4张图片
在这里插入图片描述

可以对比下图文顺序是否一致。


总结:

这个组件也可以搭配RPA工具进行使用,调用到python 的docx 包,借助RPA实现文章的自动上传功能。

你可能感兴趣的:(RPA,UiBot,笔记,python,word,开发语言)