Как создать pdf из загруженных фотографий (python)

** Я хочу создать 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",)

Какая ошибка? Если вы получаете сообщение об ошибке, опубликуйте его в своем вопросе.

mypetlion 23.11.2018 18:03

Не пишите ошибку. Я хочу как сохранить этот pdf

kkwebba 23.11.2018 18:10

Он просто пишет, что процесс завершен с кодом выхода 0

kkwebba 23.11.2018 18:11
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
3
56
2

Ответы 2

Ваш код мало что делает. Вот что происходит при запуске вашего кода:

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-адреса. Код запустился бы, если бы его не было в определении функции.

Отредактировал свой ответ

Charles Landau 23.11.2018 18:08

С помощью оператора def вы определяете функцию. Это просто строительство структура того, что должен делать этот конкретный фрагмент кода. На самом деле он этого не выполняет.

С def внутри цикла for вы строите структуру снова и снова, но никогда не выполняете этот фрагмент кода.

Если вы настаиваете на использовании функций, вы можете определить функцию вне цикла (один раз), а затем вызвать ее, используя function_name() внутри цикла for.

Или вы можете отказаться от использования функции altogehter и просто удалить часть def вне цикла и позволить инструкциям выполняться напрямую.

У меня был очень похожий проект, в котором использовались похожие концепции pdf. Если какая-то проблема все еще существует, я надеюсь, что она поможет вам в дальнейшем: Ссылка на GitHub.

Другие вопросы по теме