2017-09-08 1 views
1

나쁜 영어로 죄송합니다.jpg와 python을 사용하여 .docx 파일의 대체 문자열

.docx 파일의 .jpg 파일로 문자열을 대체하려고합니다. 먼저 JPEG를 BMP로 변환하고 클립 보드로 이동 한 다음 Copy PIL/PILLOW Image to Windows Clipboard을 따른 다음 Findx.Execute를 "^ c"와 함께 사용하여 docx 파일의 특수 문자열을 대체하십시오.

대체는 잘되지만, .docx 파일에 폭 15.42cm의 이미지를 붙여 넣습니다. 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

실제로는 MS-Word가 설치되어 있지 않거나 python-docx을 사용하여 실제로 시작하지 않아도됩니다.

기존 문서를 읽고 바꾸어야하는 텍스트를 찾아 단어를 사용하고 페인트하는 대신 document.add_picture('monty-truth.png', width=Inches(1.25)) 을 사용해야합니다.

다른 옵션은 python이 붙여 넣은 이미지를 선택하고 word 내에 해당 속성을 설정하는 것입니다.

+1

THX ~ python-docx로 완벽하게 작동합니다. – sKaelthas

관련 문제