如何从下载的照片创建pdf(python)

时间:2018-11-23 16:57:34

标签: python pdf download

**我要在下载照片后创建pdf文件,它不保存pdf文件。哪里有错误? **

from fpdf import FPDF
import random
import urllib.request


for i in range(1,10):
 def image(url):
  name=random.randrange(1,80)
  fullname=str(name)+"."+"jpg"
  a=urllib.request.urlretrieve(url,'/Users/Dato/Desktop/python/photo/{}.jpg'.format(name))
  image("https://img.yumpu.com/54761731/{}/950x950/7uhbctpd0.jpg".format(random.randrange(1, 80)))

  pdf = FPDF()
  pdf.add_page()
  pdf.image('{}'.format(a), x=0, y=0)
  pdf.output("1.pdf",)

2 个答案:

答案 0 :(得分:0)

您的代码执行不了什么。代码运行时会发生以下情况:

from fpdf import FPDF
import random
import urllib.request


for i in range(1,10):

在这里导入包,然后开始for循环。循环中的代码将为每个循环运行一次,并且可以访问变量i,该变量每次循环运行都会更改。

def image(url):
    ...

其余的代码由for循环内的函数定义组成。您定义的函数可以称为image("example.com"),但您绝不要这样做。因此for循环会运行并定义一个函数很多次,但从不调用它。该功能永远不会运行。

编辑:要实际运行代码,您只需删除函数定义并直接提供URL。如果不在函数定义中,则代码将运行。

答案 1 :(得分:0)

使用def语句定义一个函数。它只是构建该特定代码段应执行的操作的结构。它实际上并没有执行它。

使用def循环中的for,您将一次又一次地构建结构,但从未真正执行过这段代码。

如果您坚持使用函数,则可以在循环外定义一次函数,然后在function_name()循环内使用for对其进行调用。

或者,您可以取消使用altogehter函数,只需删除循环旁的def部分,然后直接执行指令即可。

我有一个非常相似的项目方式,它使用了相似的pdf概念。如果仍然存在问题,希望它能为您提供进一步的指导:GitHub Link