从网址获取照片并粘贴到WORD或PDF

时间:2018-01-19 08:58:34

标签: python pdf url ms-word

我有一个包含3列的excel文件:id,url1和url2。 url1和url2都包含图像的URL。

如何获取图像并以表格格式粘贴到WORD和PDF?有3列:id,来自url1的图像和来自url2的图像。

import pandas as pd
import urllib
from docx import Document
from docx.shared import Inches

df = pd.read_excel('data.xlsx')
document = Document()
p = document.add_paragraph()
r = p.add_run()
r.add_picture('a.jpg')#OK
url = r'http://www.example.com/a.jpg'
r.add_picture(urllib.request.urlopen(url))#fail, how to do it?

document.save('demo.docx') 

非常感谢。

2 个答案:

答案 0 :(得分:1)

  1. 您可以查看:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html以阅读excel文件。
  2. 您可以使用简单的for循环来遍历数据。
  3. 您可以使用http://docs.python-requests.org/en/master/向网址发送获取请求并接收图片。
  4. 您可以使用https://pillow.readthedocs.io/en/5.0.0/来操作图像。
  5. 您可以使用http://python-docx.readthedocs.io/en/latest/user/documents.html保存到word文件。
  6. 但是,我无法为你完成所有工作。

    编辑:
    我还没有真正使用urllib,但我可以使用

    的请求下载图像
     x = requests.get("https://www.pythonsheets.com/_static/guido.png")
    

    然后我可以使用:

    打开文件
    from PIL import Image
    from StringIO import StringIO
    Image.open(StringIO(x.content)).show()
    

    因此,这表明我可以使用请求打开下载图像文件。您可以尝试在单词文档中保存x.content

答案 1 :(得分:1)

试试这个:

import io
import urllib
from docx import Document
from docx.shared import Inches

document = Document()
p = document.add_paragraph()
r = p.add_run()
url = r'http://www.example.com/a.jpg'
io_url = io.BytesIO(urllib.request.urlopen(url).read())
r.add_picture(io_url)
document.save('demo.docx')