Reportlab вывод значений из БД в Paragraph
имеется view.py в django
def get(request):
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="Damage Report File.pdf"'
buffer = io.BytesIO()
# p = canvas.Canvas(buffer, pagesize=A4)
# p.setPageSize(landscape(letter))
MyFontObject = ttfonts.TTFont('a_AntiqueTradyNr',r'c:\Users\user\venv\webapp\news\templates\news\a_AntiqueTradyNr.ttf')
pdfmetrics.registerFont(MyFontObject)
# p.setFont("a_AntiqueTradyNr", 35)
mas = Plan.objects.values_list('title','anons','full_text','plan','fact','slujba','data','ispolnitel','status','prim')
styles = getSampleStyleSheet()
styleN = styles["Normal"]
styleN.fontName = "a_AntiqueTradyNr"
styleN.alignment = TA_LEFT
width, height = A3
# logo = '/home/joel/myappointments/appointments/static/clinic/img/logo/logo.png'
elements = []
# print(f'Height={height}')
# imgw = imgh = 100
# im = Image(logo, width=imgw, height=imgh)
# im.hAlign = 'LEFT'
# elements.append(im)
headstyle = ParagraphStyle(
name='MyHeader',
fontName='a_AntiqueTradyNr',
fontSize=10,
alignment=0
)
doctorstyle = ParagraphStyle(
name='MyDoctorHeader',
fontName='Helvetica',
fontSize=13,
leading =10
)
elements.append(Spacer(1, 20))
# We use paragraph style because we need to wrap text. We cant directly wrap cells otherwise
drug1 = Paragraph('ФИО ответственного', styleN)
line1 = [(drug1, "Объект" , "Вид работ", "Объем работ план", "Объем работ факт", "Служба", "Дата", "ФИО исполнителя", "Статус", "Примечание")]
line2 = list(mas)
data=line1 +line2
medstable = Table(data, repeatRows=1)
medstable.setStyle(TableStyle([
('FONT', (0, 0), (-1, -1), 'a_AntiqueTradyNr', 8),
('VALIGN',(0,0),(-1,-1), 'TOP'),
('TEXTCOLOR',(0,0),(-1,0),colors.white),
('BACKGROUND', (0, 0), (-1, 0), colr(40, 196, 15)),
('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
('BOX', (0, 0), (-1, -1), 0.25, colors.blue),
#('GRID',(0,1),(-1,-1), 0.5, '#CFEAD4'),
]))
elements.append(medstable)
doc = SimpleDocTemplate(buffer, pagesize=letter, rightMargin=10, leftMargin=20, \
topMargin=20, bottomMargin=20, allowSplitting=1,\
title="Prescription")
doc.build(elements)
response.write(buffer.getvalue())
buffer.close()
return response
выгружает все норм
но есть момент, если текст в БД большой (много слов) то таблица выходит за пределы страницы
подскажите, как исправить, в инете есть варик заносить в Paragraph(styleN), но не соображу как