【发布时间】:2020-11-04 09:33:05
【问题描述】:
我无法将西里尔文字包装到表格单元格中。我使用 pdfmetrics.registerFont 设置显示西里尔符号的字体,但是当文本长于单元格的宽度时,它不会被换行。我尝试使用 getSampleStyleSheet ,然后将文本包装到单元格中,但我得到的是黑框而不是西里尔符号。这是我的代码示例:
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm
from reportlab.platypus import Table, TableStyle
from reportlab.lib import colors
def coord(x, y, unit=1):
x, y = x * unit, height - h - y * unit
return x, y
width, height = A4
pdfmetrics.registerFont(TTFont('bold', 'Lora-Bold.ttf'))
pdfmetrics.registerFont(TTFont('regular', 'Lora-Regular.ttf'))
file_name = 'Report2.pdf'
title = 'ПРОТОКОЛ'
new_incidents = [('къс текст', 'къс текст', 'къс текст', 'дълъг текст', 'дълъг текст'),
('къс текст', 'къс текст', 'къс текст', 'дъъъъъллъъгггггг текстттттттттт',
'дъъъъъллъъгггггг текстттттттттт')]
pdf = canvas.Canvas(file_name)
table1 = Table(new_incidents, colWidths=[1.6 * cm, 2.8 * cm, 2.8 * cm, 2.5 * cm, 2.5 * cm])
table1.setStyle(TableStyle([('ALIGN', (0, 1), (-1, -1), 'LEFT'),
('ALIGN', (0, 0), (-1, 0), 'CENTER'),
('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
('BOX', (0, 0), (-1, -1), 0.25, colors.black),
('FONT', (0, 0), (-1, 0), 'bold', 9),
('FONT', (0, 1), (-1, -1), 'regular', 8)
]))
elems = []
elems.append(table1)
w, h = table1.wrap(width, height)
table1.wrapOn(pdf, 550, 840)
x, y = coord(1.5, 6, cm)
table1.drawOn(pdf, x, y)
pdf.save()
【问题讨论】:
标签: word-wrap reportlab cyrillic