Здравствуйте.
Помогите пожалуйста сделать перевод строки в таблице.
тут советуют использовать
Как пример брал оттуда же весь скрипт и пробовал. Но то не мог запустить отображение кириллицы через шрифт DejaVuSerif.ttf, то не мог добавить текст до и после таблицы.
В итоге получаю такой pdf
Помогите пожалуйста сделать перевод строки в таблице.
Python:
import sqlite3
from reportlab.platypus import SimpleDocTemplate
from reportlab.lib.pagesizes import A4, mm
from reportlab.platypus import Table, TableStyle
from reportlab.lib import colors
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.units import inch
styles = getSampleStyleSheet()
Title = "Отчет такой-то"
def myLaterPages(canvas, doc):
canvas.saveState()
canvas.setFont('DejaVuSerif',18)
canvas.drawCentredString(300, 780, Title)
canvas.setFont('DejaVuSerif', 9)
canvas.drawString(7.25 * inch, 0.75 * inch, "1")
canvas.restoreState()
def create_report(title='Тестовый отчет'):
pdfmetrics.registerFont(TTFont('DejaVuSerif', 'DejaVuSerif.ttf', 'UTF-8'))
fileName = 'pdfTable.pdf'
pdf = SimpleDocTemplate(
fileName,
pagesize=A4
)
pdf.title = title
table = Table(temp_data, colWidths=(None, None, None, None, None, None, None, 30*mm))
style_sup_cyrillic = TableStyle([('FONTNAME', (0, 0), (-1, -1), 'DejaVuSerif')])
table.setStyle(style_sup_cyrillic)
style_header = TableStyle([
('BACKGROUND', (0, 0), (8, 0), colors.green),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('BACKGROUND', (0, 1), (-1, -1), colors.beige),
])
table.setStyle(style_header)
rowNumb = len(temp_data)
for i in range(1, rowNumb):
if i % 2 == 0:
bc = colors.burlywood
else:
bc = colors.beige
ts = TableStyle(
[('BACKGROUND', (0, i), (-1, i), bc)]
)
table.setStyle(ts)
ts = TableStyle(
[
('BOX', (0, 0), (-1, -1), 1, colors.black),
('GRID', (0, 0), (-1, -1), 1, colors.black)
]
)
table.setStyle(ts)
elems = []
elems.append(table)
pdf.build(elems, onFirstPage=myLaterPages)
# conn = sqlite3.connect('oib.db')
# cursor = conn.cursor()
# list_from_table = map(list, cursor.execute('SELECT * FROM journal_usb;'))
# headers = ['ID', 'ID СНИ', 'Фамилия', 'Имя', 'Отчество', 'Основание', 'Дата', 'Примечание']
temp_data = [['ID', 'ID СНИ', 'Фамилия', 'Имя', 'Отчество', 'Основание', 'Дата', 'Примечание'],
[1, '111', 'Петров', 'Петр', 'Петрович', '222', '2020-07-07', 'просто так'],
[2, '333', 'Иванов', 'Иван', 'Иванович', '444', '2020-07-07', 'вероятно просто так'],
[3, '555', 'Ахмедов', 'Ахмед', 'Ахмедович', '666', '2020-07-07', 'сказали дать доступ ))'],
[4, '777', 'Петров', 'Петр', 'Петрович', '888', '2020-07-07', 'и снова он'],
[5, '999', 'Омаров', 'Омар', 'Омарович', '101010', '2020-07-07', 'новенький'],
[6, '111111', 'Тимофеев', 'Тимофей', 'Тимофеевич', '121212', '2020-07-07', 'какое ФИО ))'],
[7, '131313', '1_кварталов', '1_квартал', '1_кварталович', '141414', '2020-03-08', \
'вапроватплватплвать авпвадлптьлдвапьт валпьвдалпь вальдвлапьдлваьд вальидвальидваль']]
# for k in list_from_table:
# temp_data.append(k)
# temp_data.insert(0, headers)
create_report()
Python:
styles = getSampleStyleSheet()
styleN = styles['Normal']
styleN.wordWrap = 'CJK'
В итоге получаю такой pdf