python-docx-如何在特定位置添加图像?

时间:2019-12-13 02:13:37

标签: python image position element docx

我有一个需要添加图片的现有文档。图片必须位于文档右上角的框架内。它需要放入的框架已经是文档的一部分。据我了解,我所要做的就是在框架内的段落中添加一个段落(这是一个v:shape元素),然后在其中添加图片,图片的位置应假定周围元素的位置。唯一的问题是我只能将一个段落,运行或图片添加到文档的末尾,而不能添加到文档较远的特定元素。另外,尽管我可以为图像设置大小,但没有选项可以设置图像在页面上的位置。反正有这样做吗?同样,我要执行的操作是在页面上特定的x,y位置向文档添加图片。

编辑: 这是我最近的尝试。除了深入了解文档以获取要添加图片的元素之外,我没有别的办法。

for r in doc.paragraphs[0].runs:
    for r2 in r._r.iterchildren():
        if r2.tag == '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}pict':
            for r3 in r2.iterchildren():
                if r3.tag == '{urn:schemas-microsoft-com:vml}shape':
                    for r4 in r3.iterchildren():
                        if r4.tag == '{urn:schemas-microsoft-com:vml}textbox':
                            for r5 in r4.iterchildren():
                                if r5.tag == '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}txbxContent':
                                    for r6 in r5.iterchildren():
                                        if r6.tag == '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}p':
                                            #pic = doc.add_picture('image.jpg', width=1508760, height=1905000)
                                            #pic_xml = pic._inline.xml
                                            #r6.append(pic._inline)
                                            pr = r6.add_run()
                                            pr.add_picture('image.jpg', width=1508760, height=1905000)

我已经阅读了一些示例,这些示例说将运行添加到段落中,然后向该运行添加图片。这是我正在尝试的方法,但是我得到的只是一个错误,例如:“'CT_P'对象没有属性'add_run'”

尽管事实是您实际上可以在段落中添加游程,但这意味着我要向下钻取的元素是与常规段落对象不同的对象类型。那有意义吗?我是否必须隐秘此元素?

0 个答案:

没有答案