2
我使用python-docx來生成word文檔。用戶希望他創建一個模板(在字段描述中),當他在模板中寫入例如%(company_logo)時,我用從數據庫恢復的公司圖片替換此表達式。 作爲第一問題,我recupered一個公司的標誌從數據庫(PostgreSQL系統)和I使用此代碼來替換此表達式:使用python-docx插入以64位編碼的圖像到word文檔中?
cr.execute("select name, logo_web from res_company where id=%s",[soc_id])
r=cr.fetchone()
if r :
company_name=r[0]
logo_company = r[1]
output = cStringIO.StringIO()
doc = docx.Document()
contenu=contenu % {'company_logo': logo_company, 'company_name': company_name,}
doc.add_paragraph(contenu)
的輸出是包含的底座64代碼的文件字圖像作爲一個字符串。我解碼此代碼,我試圖將其添加爲用下面的代碼的圖片:
logo_company = base64.b64decode(r[1])
doc.add_picture(logo_company)
但是我有這樣的錯誤,告訴我這樣的說法一定是路徑的畫面。
TypeError: file() argument 1 must be encoded string without NULL bytes, not str
你好scanny,它可以與add_picture()像下面添加:f_logo_company =打開( 「logo_company.png」, 「W」) f_logo_company.write(logo_company) f_logo_company.close( )之後,我們使用doc.add_picture('logo_company.png',width = Inches(1.0)),但問題是我不能將它插入到特定位置,我只能將其添加到該文件。記住我有一個字段類型的文本,當用戶在這個字段中寫入%(company_logo)s時,我應該用logo替換它。而且我不能使用表格,因爲它只是一個字段。 –
是的,不幸的是,當前版本不能添加「內聯」圖片,它只能在當前文檔的末尾添加一個自己的段落。如果你想添加一個內聯圖像,你需要開發這個功能,或許使用'add_picture()'的實現作爲指導。 – scanny
謝謝你的回答,我會盡力開發它 –