抱歉我的英语不好。
我正在尝试用.jpg文件替换.docx文件中的字符串。首先我将JPEG转换为BMP并将其移至剪贴板Copy PIL/PILLOW Image to Windows Clipboard,然后使用Find.Execute和“^ c”替换docx文件中的特殊字符串。
替换效果很好,但它将宽度为15.42cm的图像粘贴到.docx文件中。我试图用im.resize调整它的大小,但它以一个大的模糊图像而不是一个小图像结束。我怎么能让它变小?
我正在使用python2.7.2和Win7。非常感谢。
from win32com.client import Dispatch
from cStringIO import StringIO
import win32clipboard
import win32com
from PIL import Image
def setImageToClipboard(clip_type, data):
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardData(clip_type, data)
win32clipboard.CloseClipboard()
filepath = 'd:/tmp.jpg'
im = Image.open(filepath)
#im = im.resize((10, 10))
output = StringIO()
im.convert("RGB").save(output, "BMP")
data = output.getvalue()[14:]
output.close()
w = win32com.client.Dispatch('Word.Application')
w.Visible = 1
w.DisplayAlerts = 0
doc = w.Documents.Open("d:/clipboard_test.docx")
search = "TEST"
setImageToClipboard(win32clipboard.CF_DIB, data)
w.Selection.Find.ClearFormatting()
w.Selection.Find.Replacement.ClearFormatting()
w.Selection.Find.Execute("TEST", False, True, False, False, False, True, 1, True, ReplaceWith="^c", Replace=2000)
doc.SaveAs("d:/clipboard_test2.docx")
doc.Close()
w.Quit()
答案 0 :(得分:0)
您可以更干净地执行此操作,而无需实际安装MS-Word或使用python-docx启动它。
您需要阅读现有文档,找到需要替换的文本,然后使用document.add_picture('monty-truth.png', width=Inches(1.25))
而不是使用word并假装画画。
唯一的另一个选择是让python选择你粘贴的图像并在word中设置它的属性。