Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 28, 2019 12:48:43

Fedor_Bober
От: Екатеринбург
Зарегистрирован: 2019-06-07
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Библиотека FPDF

Всех приветствую.
Есть потребность в преобразовании *.jpg файлов в *.pdf .
Ниже код это делает. Но делает отдельными файлами *.pdf.
Подскажите, кому не лень и знаком с библиотекой FPDF, как загонять несколько *.jpg в один *.pdf файл?

 def clicked_addfiles():
        window.filename = filedialog.askopenfilenames(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
        print(window.filename)          
        for j in window.filename:        
            pdf =  ()
            pdf.add_page()
            pdf.image(j, x=1, y=1, w=210)
            pdf.set_font("Arial", size=12)
            pdf.ln(85)            
            pdf.output(os.path.split(j)[0]+"/"+os.path.split(j)[-1][:-4]+".pdf")

Отредактировано Fedor_Bober (Июнь 28, 2019 12:49:27)

Офлайн

#2 Июнь 28, 2019 16:56:06

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

Библиотека FPDF

Попробуй последнюю строку вынести за пределы цикла, а то у тебя при каждом прохождении цикла идёт выгрузка. Строку

 pdf =  ()
вынеси из цикла вверх.

Офлайн

#3 Июнь 28, 2019 21:44:49

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Библиотека FPDF

Rafik
вынеси из цикла вверх.
и
 pdf.output(os.path.split(j)[0]+"/"+os.path.split(j)[-1][:-4]+".pdf")
вынеси из цикла вниз, а то при каждой итерации цикла идет запись в новый файл.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 28, 2019 21:45:15)

Офлайн

#4 Июль 1, 2019 09:27:05

Fedor_Bober
От: Екатеринбург
Зарегистрирован: 2019-06-07
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Библиотека FPDF

PEHDOM
Супер! Спасибо за совет, а то к вечеру уже не соображал.

Офлайн

#5 Июль 1, 2019 09:44:57

Fedor_Bober
От: Екатеринбург
Зарегистрирован: 2019-06-07
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Библиотека FPDF

window.filename
Это <class ‘tuple’> кортеж, как я понимаю.
В нем отображаются все выбранные файлы.
Вопрос: как сбросить значение window.filename или выражаясь словами юзера отменить выборку файлов?

Офлайн

#6 Июль 1, 2019 11:13:33

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Библиотека FPDF

это смотря нужна ли будет данная переменная в дальнейшем и откуда у этой переменной растут ноги,
можно обнулить так

 window.filename=[]
или так
 window.filename[:]=[]



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июль 1, 2019 11:16:50)

Офлайн

#7 Июль 2, 2019 09:56:30

Fedor_Bober
От: Екатеринбург
Зарегистрирован: 2019-06-07
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Библиотека FPDF

Дабы не плодить тем, т.к. это дальнейшие мои шаги в написании программы.

 def cancel_selection():            
      window.filename=[]
      lbl1 = Label(window, text=len(window.filename))  
      lbl1.grid(column=2, row=0)
btn_cancel = Button(window, text="Отмена выборки", command=cancel_selection)
btn_cancel.grid(column=4, row=0)

При нажатии кнопки btn_cancel выполняется команда cancel_selection.
В самой функции обнуляется window.filename
И lbl1 присваивается значение (в данном случае “0”)
Но при этом оно “перезаписывается” поверх предыдущего значения (и это визуально видно), которое было так же в lbl1.

Что то я не понимаю как так?
Вроде переменной присваивается новое значение.

Отредактировано Fedor_Bober (Июль 2, 2019 10:06:55)

Офлайн

#8 Июль 2, 2019 10:07:02

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Библиотека FPDF

а зачем вы заново создаете еще один лейбл? что мешает просто поменять текст в уже существующем ?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#9 Июль 2, 2019 10:13:12

Fedor_Bober
От: Екатеринбург
Зарегистрирован: 2019-06-07
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Библиотека FPDF

PEHDOM
а зачем вы заново создаете еще один лейбл? что мешает просто поменять текст в уже существующем ?
lbl1.configure ?

Офлайн

#10 Июль 2, 2019 10:35:51

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Библиотека FPDF

 lbl1['text'] = 'some text'
или
lbl1.config(text='some text')
при условии что lbl1 у вас глобальная переменная



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июль 2, 2019 10:46:29)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version