Treeview печать в PDF

valer123

Новичок
Пользователь
Дек 7, 2021
14
0
1
Не удается преобразовать таблицу в PDF. Список data, созданный вручную преобразуется, а список t, созданный при помощи append нет.

data = [[4, '', 5, 6, 7], [8, 9, '', 11, 12]] # Преобразуется в PDF

t = [] # Выдает ошибку, см. ниже

def pdf(spacing=1):

for line in tree.get_children():
for value in tree.item(line)['values']:
t.append(value)
print(f't={t}')

# Разделяет список таблицы на списки по строкам
chunk_size = 5 # кол-во элементов в одной строке
new_list = [t[x:x + chunk_size] for x in range(0, len(t), chunk_size)]
print(f'new_list={new_list}')

pdf = FPDF()
pdf.set_font("Arial", size=12)
pdf.add_page()

col_width = pdf.w / 4.5
row_height = pdf.font_size
for row in new_list:
for item in row:
print(f'item={item}')
pdf.cell(col_width, row_height * spacing,
txt=str(item), border=1)
pdf.ln(row_height * spacing)

file_name = en1.get()
print(f'file_name={file_name}')
pdf.output(f'{file_name}.pdf') # Наименование файла

Ошибка:

t=['Скамейка 1', '', '', '', '', 'Труба d20х2000', '2.0', 'шт', '3.0', '6.0', 'Уголок 40х40х3х2000', '4.0', 'шт', '5.0', '20.0']
total=26.0
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 1892, in __call__
return self.func(*args)
File "/Users/ulia/Documents/Курс Python/Мои программы/Скамейка/1 таблица 3 без базы.py", line 151, in pdf
pdf.output(f'{file_name}.pdf') # Наименование файла
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/fpdf/fpdf.py", line 1065, in output
self.close()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/fpdf/fpdf.py", line 246, in close
self._enddoc()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/fpdf/fpdf.py", line 1636, in _enddoc
self._putpages()
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/fpdf/fpdf.py", line 1170, in _putpages
p = self.pages[n].encode("latin1") if PY3K else self.pages[n]
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 82-89: ordinal not in range(256)
new_list=[['Скамейка 1', '', '', '', ''], ['Труба d20х2000', '2.0', 'шт', '3.0', '6.0'], ['Уголок 40х40х3х2000', '4.0', 'шт', '5.0', '20.0']]
item=Скамейка 1
item=
item=
item=
item=
item=Труба d20х2000
item=2.0
item=шт
item=3.0
item=6.0
item=Уголок 40х40х3х2000
item=4.0
item=шт
item=5.0
item=20.0
file_name=Скамейка 1

Process finished with exit code 0
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
 

Форум IT Специалистов