Найти - Пользователи
Полная версия: Библиотека FPDF
Начало » Python для новичков » Библиотека FPDF
1 2
Fedor_Bober
Всех приветствую.
Есть потребность в преобразовании *.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")
Rafik
Попробуй последнюю строку вынести за пределы цикла, а то у тебя при каждом прохождении цикла идёт выгрузка. Строку
 pdf =  ()
вынеси из цикла вверх.
PEHDOM
Rafik
вынеси из цикла вверх.
и
 pdf.output(os.path.split(j)[0]+"/"+os.path.split(j)[-1][:-4]+".pdf")
вынеси из цикла вниз, а то при каждой итерации цикла идет запись в новый файл.
Fedor_Bober
PEHDOM
Супер! Спасибо за совет, а то к вечеру уже не соображал.
Fedor_Bober
window.filename
Это <class ‘tuple’> кортеж, как я понимаю.
В нем отображаются все выбранные файлы.
Вопрос: как сбросить значение window.filename или выражаясь словами юзера отменить выборку файлов?
PEHDOM
это смотря нужна ли будет данная переменная в дальнейшем и откуда у этой переменной растут ноги,
можно обнулить так
 window.filename=[]
или так
 window.filename[:]=[]
Fedor_Bober
Дабы не плодить тем, т.к. это дальнейшие мои шаги в написании программы.
 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.

Что то я не понимаю как так?
Вроде переменной присваивается новое значение.
PEHDOM
а зачем вы заново создаете еще один лейбл? что мешает просто поменять текст в уже существующем ?
Fedor_Bober
PEHDOM
а зачем вы заново создаете еще один лейбл? что мешает просто поменять текст в уже существующем ?
lbl1.configure ?
PEHDOM
 lbl1['text'] = 'some text'
или
lbl1.config(text='some text')
при условии что lbl1 у вас глобальная переменная
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB