11

関数に使用できるように、PythonReportLabにフォントを追加しようとしています。この関数はcanvas.Canvasを使用してPDFに大量のテキストを描画します。複雑なことは何もありませんが、レイアウトの問題のために固定幅フォントを追加する必要があります。

見つけた情報を少し使ってフォントを登録しようとすると、うまくいったようです。しかし、Canvasオブジェクトから.addFont('fontname')を呼び出そうとすると、取得し続けます

「PDFDocumentインスタンスには属性「addFont」がありません」

関数が実装されていないだけですか?.getAvailableFontsにリストされている10個程度のデフォルトフォント以外のフォントにアクセスするにはどうすればよいですか?ありがとう。

私が実現しようとしていることのいくつかのサンプルコード:

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」は私がうそをついたランダムなフォントでした。

4

1 に答える 1

7
c.setFont('TestFont')
c.drawString(1,1,'test data here')

setFont使用するフォント名を設定するには、およびdrawString

ReportLabは、ドキュメントで使用する場合、フォントを自動的に埋め込みます。フォントを名前でグローバルに登録した後、手動で追加する必要はありません。

于 2010-04-16T21:45:32.973 に答える