2015-10-04 342 views
4

我使用Python-docx來生成Microsoft Word文檔。用戶希望當他爲例如:「早安每個身體,這是我的%(profile_img)s你喜歡它嗎? 在一個HTML字段中,我創建一個Word文檔,並從數據庫中恢復用戶的圖片,並將用戶的圖片替換爲關鍵字%(profile_img)不在文檔末尾。隨着Python的DOCX我們使用這個指令添加圖片:使用Python在文檔(.docx)中的特定位置添加圖像?

document.add_picture('profile_img.png', width=Inches(1.25)) 

圖片被添加到文檔中,但它在文檔的末尾添加的問題。 使用python在Microsoft Word文檔的特定位置添加圖片是不可能的?我還沒有在網絡上找到任何答案,但看到有人在別處詢問同樣沒有解決辦法的答案。

謝謝(注:我不是比這個尷尬的部分我的代碼的其餘部分將很基本的一個巨大的experiance程序員等)

+0

如果您先將左邊的部分文本添加到關鍵短語中,然後添加圖像,然後添加文本的其餘部分,該怎麼辦?你試過這個嗎? – lenz

+0

你好楞次,是的,我已經嘗試過,但結果是文本「早上好每個身體,這是我的」在第一行,「你喜歡它」在第二行和文件末尾的圖片 –

回答

6

報價the python-docx documentation

的Document.add_picture()方法在其自己的段落中將指定的圖片添加到文檔的末尾。但是,通過深入挖掘API,您可以在圖片的任一側放置文本,或者同時放置兩者。

當我們「深入一點」時,我們發現了Run.add_picture() API。

下面是使用它的一個例子:

from docx import Document 
from docx.shared import Inches 

document = Document() 

p = document.add_paragraph() 
r = p.add_run() 
r.add_text('Good Morning every body,This is my ') 
r.add_picture('/tmp/foo.jpg') 
r.add_text(' do you like it?') 

document.save('demo.docx') 
1

好了,我不知道這是否會適用於你,但這裏是我做了什麼在一個特定地點的設置圖像docx文檔: 我創建了一個基本docx文檔(模板文檔)。在這個文件中,我插入了一些無邊框的表格,用作圖像的佔位符。創建文檔時,首先打開模板,然後更新文件,在表格中創建圖像。所以代碼本身與原始代碼沒有多大區別,唯一的區別是我在特定的表格中創建段落和圖像。

from docx import Document 
from docx.shared import Inches 

doc = Document('addImage.docx') 
tables = doc.tables 
p = tables[0].rows[0].cells[0].add_paragraph() 
r = p.add_run() 
r.add_picture('resized.png',width=Inches(4.0), height=Inches(.7)) 
p = tables[1].rows[0].cells[0].add_paragraph() 
r = p.add_run() 
r.add_picture('teste.png',width=Inches(4.0), height=Inches(.7)) 
doc.save('addImage.docx') 
+0

對於以釐米爲單位的工作,只需將類Cm替換爲類Cm即可! –

相關問題