首页 > 编程语言 >【pywpsrpc/Python】改变图片宽高报错 对象无效属性: ‘tuple‘ object has no attribute ‘Width‘

【pywpsrpc/Python】改变图片宽高报错 对象无效属性: ‘tuple‘ object has no attribute ‘Width‘

时间:2024-07-25 16:55:06浏览次数:15  
标签:img tuple hr doc app pywpsrpc Width 报错 RpcProxy

概要

开发UOS环境下,使用Python通过pywpsrpc库操作word文档在指定段落添加指定宽高的图片时意外发现的该问题,在原作者的github提问后获得解答后记录(源码地址、对应提问链接以及相关资料链接贴在文章末尾)。

原因及解决方式

首先贴一段简单的代码,作用是新建一个word文档并在其中添加一个图片。

from pywpsrpc.rpcwpsapi import createWpsRpcInstance

hr, rpc = createWpsRpcInstance()
hr, app = rpc.getWpsApplication()

hr, doc = app.Documents.Add()
parag = doc.Paragraphs.Add().Range
img = parag.InlineShapes.AddPictures('/path/img.jpg')

可以看到在最后我们获得了一个InlineShape对象img,如果我们这时候需要对这个图片进行操作,按照wps官方文档,我们应该只需直接通过:

width = 100
height = 100
img.Width = width
img.Height = height

即可完成自定义该图片的长宽,但是pywpsrpc返回的却是默认的tuple所以引发了标题中的报错,此时只需要调用RpcProxy将该对象转换即可,以下是修改后的代码:

from pywpsrpc.rpcwpsapi import createWpsRpcInstance
from pywpsrpc import RpcProxy

hr, rpc = createWpsRpcInstance()
hr, app = rpc.getWpsApplication()

hr, doc = app.Documents.Add()
parag = doc.Paragraphs.Add().Range
img = parag.InlineShapes.AddPictures('/path/img.jpg')
width = 100
height = 100
RpcProxy(img).Width = width
RpcProxy(img).Height = height

doc.SaveAs2('/path/word.docx')
app.Quit()

问题解决,以上。

相关链接

pywpsrpc库:https://github.com/timxx/pywpsrpc
提问链接:https://github.com/timxx/pywpsrpc/issues/93
RpcProxy wiki:https://github.com/timxx/pywpsrpc/wiki/RpcProxy

标签:img,tuple,hr,doc,app,pywpsrpc,Width,报错,RpcProxy
From: https://blog.csdn.net/qq_45994275/article/details/140693368

相关文章