Добавление шрифта для использования в ReportLab - PullRequest
11 голосов
/ 17 апреля 2010

Я пытаюсь добавить шрифт в python ReportLab, чтобы я мог использовать его для функции. Функция использует canvas. Canvas для рисования текста в PDF, ничего сложного, но мне нужно добавить шрифт фиксированной ширины для разметки.

Когда я пытался зарегистрировать шрифт, используя ту небольшую информацию, которую я мог найти, это, казалось, работало. Но когда я пытался вызвать .addFont ('fontname') из моего объекта Canvas, я продолжаю получать

"Экземпляр PDFDocument не имеет атрибута addFont"

Функция просто не реализована? Как мне получить доступ к шрифтам, отличным от 10 или около того шрифтов по умолчанию, которые перечислены в .getAvailableFonts? Спасибо.

Пример кода, который я пытаюсь реализовать:

from reportlab.pdfgen import canvas
c = canvas.Canvas('label.pdf')
c.addFont('TestFont') #This throws the error listed above, regardless of what argument I use (whether it refers to a font or not).
c.drawString(1,1,'test data here')
c.showPage()
c.save()

Чтобы зарегистрировать шрифт, я попробовал

from reportlab.lib.fonts import addMapping
from reportlab.pdfbase import pdfmetrics

pdfmetrics.registerFont(TTFont('TestFont', 'ghettomarquee.ttf'))
addMapping('TestFont', 0, 0, 'TestFont')

где 'ghettomarquee.ttf' был просто случайным шрифтом, который я лежал вокруг.

1 Ответ

7 голосов
/ 17 апреля 2010
c.setFont('TestFont')
c.drawString(1,1,'test data here')

setFont для установки имени шрифта, который вы собираетесь использовать, и drawString.

ReportLab автоматически внедрит шрифт, если вы используете его в документе, вам не нужно добавлять его вручную после того, как вы зарегистрировали шрифт глобально под именем.

...