我正在使用带有django的python-docx来生成word文档。
有没有办法使用add_picture
从网络添加图像而不是文件系统?
总之,当我选择添加图片时,我可以给出URL。 我试着这么简单地写下来:
document.add_picture("http://icdn4.digitaltrends.com/image/microsoft_xp_bliss_desktop_image-650x0.jpg")
并收到错误:
IOError:[Errno 22]无效模式('rb')或文件名: 'http://icdn4.digitaltrends.com/image/microsoft_xp_bliss_desktop_image-650x0.jpg'
答案 0 :(得分:3)
不是很优雅,但我根据here
中的问题找到了解决方案我的代码现在看起来像这样:
import urllib2, StringIO
image_from_url = urllib2.urlopen(url_value)
io_url = StringIO.StringIO()
io_url.write(image_from_url.read())
io_url.seek(0)
try:
document.add_picture(io_url ,width=Px(150))
这很好。
答案 1 :(得分:1)
如果使用docxtemplater
(命令行界面),
您可以创建自己的模板并使用网址嵌入图片。
请参阅:https://github.com/edi9999/docxtemplater
答案 2 :(得分:0)
以下是Python 3的全新实现:
from io import BytesIO
import requests
from docx import Document
from docx.shared import Inches
response = requests.get(your_image_url) # no need to add stream=True
# Access the response body as bytes
# then convert it to in-memory binary stream using `BytesIO`
binary_img = BytesIO(response.content)
document = Document()
# `add_picture` supports image path or stream, we use stream
document.add_picture(binary_img, width=Inches(2))
document.save('demo.docx')